SSH鍵作成からアクセスまで
リモートサーバーにSSH
でアクセスするとき、
適切な鍵が無い場合や鍵設定が不適切な場合は以下のようにパスワードを求められる。
$ ssh username@host
username@host's password:
SSH鍵ペアの作成
ssh-keygen
は公開鍵、秘密鍵のペアを作成するコマンド
SSH接続を受けるサーバー(ここではusername@host)上で鍵を作成する. 一旦パスワード等の別の手段でログインして以下の手順を行う.
SSH鍵作成コマンドの例は以下の通り
$ mkdir ~/.ssh && cd "$_"
$ ssh-keygen -t rsa -b 4096 -f id_rsa_example.com -C "your_email@example.com"
-t
: 暗号化方式-b
: ビット長-f
: Keyのファイル名-C
: コメント
暗号化方式は一般に、2048bit以上かつ rsa
、ecdsa
、ed25519
であれば良いようです。
$ ssh-keygen -t rsa -b 4096 -f id_rsa_example -C "your_email@example.com"
ssh-keygen -t rsa -b 4096 -f id_rsa_example -C "your_email@example.com"
対話形式で聞かれるので答えていく パスフレーズを入力(しなくてもいいが、した方がいい)
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_example
Your public key has been saved in id_rsa_example.pub
The key fingerprint is:
SHA256:4Xk4zuEB2A9ey9zwI0H3TM9sRBZDcoPw9w+HZYjt3Gw your_email@example.com
The key's randomart image is:
+---[RSA 4096]----+
| . o.o+X. |
| o . . =.@ + |
| . + = = O o|
| . O X = B |
| . S = = E|
| + * . +.|
| + .|
| |
| |
+----[SHA256]-----+
$
公開鍵の配置
公開鍵をauthorized_keys
に追加
このファイルが存在しない場合は作成しておく。
authorized_keys
のファイル権限を0600
に変更しておく
$ cat ~/.ssh/id_rsa_example.com.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authrized_keys
これで公開鍵が配置された
秘密鍵の配置
クライアントマシンにコピー
$ scp username@host:~/.ssh/id_rsa_example ~/.ssh/
id_rsa_example
はどこに配置しても良いが、
基本的には~/.ssh/
に置くのが良い。
クライアントマシンのssh接続設定
~/.ssh/config
を下記のように記入していく、存在しない場合はファイルを作成
Host example.com (or your IPaddress)
HostName example.com
User username
IdentityFile ~/.ssh/id_rsa_root_sugoude_old
TCPKeepAlive yes
IdentitiesOnly yes
~/.ssh/config
には下記のような設定項目がある
オプション | 内容 |
---|---|
Host | ホスト名 |
HostName | ホストドメイン or IPアドレス |
User | sshログインするためのユーザー名 |
IdentityFile | sshログインするための秘密鍵のパス |
TCPKeepAlive | 接続状態を維持するか yes or no |
Port | ポート番号 |
IdentitiesOnly | 暗号鍵のみの認証か yes or no |
ServerAliveInterval | サーバーが応答しなくなってから、設定した秒数毎にパケットを送る |
ServerAliveCountMax | ServerAliveIntervalの試行回数 |
他にもたくさんあるようです。
接続の確認
$ ssh -v username@yourhostname
...
debug1: Connection established.
色々と出てくるが、debug1: Connection established.
と表示されていて
目的のサーバーにログインできていればOK