hello foo bar Saba note | SSH接続する

SSH接続する

2016.3.20 (日)

何も準備なしにいきなり接続したら、

$ ssh sampleuser@example.com
Permission denied (publickey).

なので接続できるようにする設定です。予めSSHサーバーが構築されていて、sampleuserアカウントがあるという前提での話になります。
SSHのエラーについてはこちらを御覧ください。

秘密鍵と公開鍵の生成

$ ssh-keygen -t rsa -b 4096 -C "hoge@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/sampleuser/.ssh/id_rsa): /Users/sampleuser/.ssh/sampleuser_id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/sampleuser/.ssh/sampleuser_id_rsa.
Your public key has been saved in /Users/sampleuser/.ssh/sampleuser_id_rsa.pub.
The key fingerprint is:
21:19:89:9c:5e:46:86:be:f3:6d:2e:a6:96:66:b1:be sampleuser@sampleuseriMac.local
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|          . .    |
|         o * =   |
|        S * @ * .|
|         o * @ *o|
|        + = +.@o*|
|       . = o.*oE=|
|        . .oo.o+@|
+----[SHA256]-----+

こんな感じで秘密鍵と公開鍵を作成しました。

ssh-keygenがSSH接続に必要な鍵のペアを作るコマンドです。このコマンドはかなりたくさんのオプションがあります。
ssh-keygen -b 4096 鍵のbit長指定:今現在では4096が多くなってきましたねぇ。
ssh-keygen -t rsa | dsa デフォルトはrsaだったと思います。明示的に4096bit長で作成するには、
$ ssh-keygen -t rsa -b 4096

また公開鍵に任意のコメントを入れておいた方が後々ラクです。というのは、authorized_keysに複数の鍵を登録する際にコメントがないとわからなくなってしまうからです。たいていは接続元のIPとかホスト名とかEmailとか入れておきます。

ssh-keygen -t rsa -C "任意のコメント"

どんなデフォルトのシステムなのかわからないので、だいたいこれを使っているとよいかも。

ssh-keygen -t rsa -b 4096 -C "任意のコメント"

これ以外はあんまり使わないのですが、一応一覧。

オプション

ssh-keygen [-q] [-b ビット数] -t 鍵の種類 [-N 新しいパスフレーズ] [-C コメント (訳注:SSH1のみ)] [-f 出力先identityファイル]
ssh-keygen -p [-P 古いパスフレーズ] [-N 新しいパスフレーズ] [-f パスフレーズを変更するidentityファイル]
ssh-keygen -i [-m 鍵の形式] [-f 変換するidentityファイル]
ssh-keygen -e [-m 鍵の形式] [-f 変換するidentityファイル]
ssh-keygen -y [-f identityファイル]
ssh-keygen -c [-P パスフレーズ] [-C コメント] [-f コメントを変更するidentityファイル]
ssh-keygen -l [-f 指紋を表示するidentityファイル]
ssh-keygen -B [-f ダイジェストを表示するidentityファイル]
ssh-keygen -D pkcs11
ssh-keygen -F ホスト名 [-f known_hostsファイル] [-l]
ssh-keygen -H [-f known_hostsファイル]
ssh-keygen -R ホスト名 [-f known_hostsファイル]
ssh-keygen -r ホスト名 [-f 入力するidentityファイル] [-g]
ssh-keygen -G 出力ファイル [-v] [-b ビット数] [-M 使用メモリ量] [-S 開始位置]
ssh-keygen -T 出力ファイル -f 入力ファイル [-v] [-a 試行回数] [-W ジェネレータ]
ssh-keygen -s CA鍵 -I 証明書の秘密鍵 [-h] [-n principal] [-O オプション] [-V 有効期間] [-z シリアル番号] file
ssh-keygen -L [-f 入力する鍵ファイル] ssh-keygen -A

$ ll
sampleuser_id_rsa (秘密鍵)
sampleuser_id_rsa.pub (公開鍵)

この公開鍵をリモートサーバーに転送して設定します。設定する場所は、sampleuserユーザー内のホームディレクトリ内の.sshディレクトリ内で、そこに/home/username/.ssh/authorized_keysという感じでファイルを作成します。authorized_keysが公開鍵を保存するファイルになります。これらの設定はデフォルトでは上記のようになっていますが、SSHの設定によって変えられるので管理者に聞いてみましょう。もしかしたら設定方法が違うかもしれません。authorized_keysには公開鍵を行単位で1つ1つ書いてゆくような感じになります。

path permission
/user/.ssh/ 700
/user/.ssh/authorized_keys 600
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsXKtvKRSyfrVAAAAS1gZNj9UHbAAAAffM3HhOVpAAAA2vecSK2HMHdZjWOSmAAAAqBQXwCba3AAAAyJHvyAAAAfY+YE7PveAAAA9e1E6dJjiAAAAkLakfUMcoAAAAxffeMvxEfRuAAAAc29sSsQcLStOAAAAuy0d47fshXAAAA7G/YKQGQAvXVkcPKrAAAAcz8wNg/ZKeAAAA5IKlPISzoFjAkdxAAAA0xSRNdx3rhpAAAAlY1vt92Km9TymAAAApqeq98Z6DAAAAEPPSl0vXzzAAAA+ZbmXcGHzDD3QAAAAzJhzd6L+j4LrCAAAA5qfA3TNau+K3XmAAAAV7V9+mQ== sampleuser@sampleuser-iMac.local

作成した秘密鍵とSSHの接続に即した形でアクセスすればOKです。

$ ssh -i /Users/sampleuser/.ssh/sampleuser_id_rsa sampleuser@example.com