OpenSSH

導入

サーバーにアクセスするにはこれを使う。

Raspberry Piは初期設定でパスワード認証によってsshで接続できるようになっている。

ローカルネットワークでsshで接続するには次のようにする。

1 ssh user@host.local

sshにはいくつか認証方式がある。

  • パスワード認証
  • キーによる認証

キー認証の方がより安全な方式のようなので、まず、パスワード認証でログインできることを確認したら、キー認証に切り替えて、パスワード認証によるログインを無効化する。

具体的には以下のような手順になる

  1. クライアントの方でssh-keygenを使って公開鍵と秘密鍵のペアを生成する
  2. サーバーに公開鍵を登録する。手動でやるか、ssh-copy-idを使う
  3. sshdの設定ファイルを編集しパスワード認証を無効化する
  4. ssh-agentやscpなどの便利なコマンドを使う

全体を把握するためにWikibooksを読むのもいいかもしれない。

設定したのが少し前のことなので、大まかにしか書いてない、後で書き直す。

ssh

ssh

sshクライアント。

パスワード認証にせよ鍵認証にせよこれを使うことになる。

1 ssh user@host

あとは道なりに進んでゆけば良い。

ssh-keygen

鍵を生成する。

1 ssh-keygen

特にオプションなどは必要ないと思う。パスフレーズを尋ねられるので設定する。

公開鍵を登録する

サーバーの~/.sshがsshの設定ファイルを入れるディレクトリなのでここに鍵を入れる。鍵はテキストファイルなので端末からコピーアンドペーストすればよい。

ssh-copy-idを使うこともできる。

sshd

設定はファイルは/etc/ssh/sshd_configである。

パスワード認証を無効化するには設定ファイルにPasswordAuthentication noと記述する。

サービスとして実行されれいるので、設定ファイルの内容を反映するためにはsudo systemctl restart sshd.service として再起動する。

ssh-agent

クライアントの方で使うと以後の鍵の入力を省略できるようになる。 ssh-addで秘密鍵を登録する。

1 ssh-agent bash
2 ssh-add ~/.ssh/key

複数のクライアントから同じサーバーに接続する必要がある場合は便利かもしれないが、自分の場合はあまり使っていない。

sftp & scp

クライアントからサーバーにファイルを転送するのにこれらが必要だ。sftpでもscpもどちらでもよさそうだが十分試してないので、後で調査する。

sftp

1 sftp moli@pi.local
ヘルプを表示する
help
sftpを終了する
bye
exit
リモート ディレクトリを移動する
cd
リモート ディレクトリをリスト表示する
ls
ローカルにファイルを転送する
get foo.txt
ローカル ディレクトリをリスト表示する
lls
ローカルファイルを転送する
put foo.txt