普段,terminal.appでSSH接続するときに
ssh [ユーザ名]@[サーバ] -p [ポート]
とタイプして,都度パスワードを入力している人へ.
簡潔に設定できるように記述しているため,一部適切とは言えないものも含みます.
以下の操作は,サーバではなく,自分のMacで行います.
キーペアの生成
パスワードの代わりとなる,秘密鍵と公開鍵のペアを生成します.
ssh-keygen -t ecdsa -b 521 -C "自分のPCであることが分かる名前"
例えば,こんな感じ.
ssh-keygen -t ecdsa -b 521 -C "masakiMBP"
実行すると,
Enter file in which to save the key (/Users/[ユーザ名]/.ssh/id_ecdsa):
と聞かれますが,何も入力せずにEnter
(入力すると,ファイル名を変更できます)
続いて,
Enter passphrase (empty for no passphrase):
と聞かれますが,何も入力せずにEnter
(入力すると,キーペアを使うと
きにパスフレーズの入力が求められるようになります.セキュリティ上は入力しておくべきですが,学科の演習サーバなどであれば(特権を持っていないアカウントであれば)設定しないことも少なくありません.)
続いて,
Enter same passphrase again:
と聞かれますが,何も入力せずにEnter
(上と同じものの入力を求められています.)
以下のような図形が出力されれば,問題なくキーペアが生成できています.
公開鍵をサーバに転送
生成した公開鍵と秘密鍵のうち,公開鍵を接続したいサーバに予め置いておく必要があります.
ですので,手元のMacからサーバへ以下のコマンドで転送します.
ssh-copy-id [ユーザ名]@[サーバ] -p [ポート]
いつもsshするときに入力していたものの"ssh"を"ssh-copy-id"にするだけですね.
パスワードを求められるので,普段通り入力してください.
いつものようにサーバに接続できたら,完了です.
これで,パスワードを入力せずとも接続できるようになりました.
接続先をconfigファイルに保存
毎回ユーザ名とサーバのアドレス,ポート番号を入力するのは面倒ですので,この機会に
ssh hi
とタイプするだけで接続できるようにします.
再びMacのTerminalを開き,(もしまだサーバに繋がっていたら,exitと打って接続を切ってください.)
vi ~/.ssh/config
で設定ファイルを編集します.
以下の内容を入力してください.
Host 自分で決める短い名前
HostName サーバのアドレス
Port ポート番号
User ユーザ名
IdentityFile ~/.ssh/id_ecdsa
例えば,
Host hi
HostName test.example.com
Port 2229
User df20test
IdentityFile ~/.ssh/id_ecdsa
こういう感じ.
入力を終えたら,保存してください.
その後は,
chmod 600 ~/.ssh/config
を実行すれば,あとはいつでも
ssh 自分で決めた短い名前
で接続できるようになります.
複数のサーバに接続するには
また別のサーバに接続したいとき,改めてもう一度キーペアを生成する必要はありません.
今回生成したキーペアをそのまま使います.
そのため,
ssh-copy-id [ユーザ名]@[サーバ] -p [ポート]
でまた別のサーバに公開鍵を転送してあげて,
~/.ssh/configを編集すればOKです.
Host hi
HostName test.example.com
Port 2229
User df20test
IdentityFile ~/.ssh/id_ecdsa
Host sp
HostName sample.example.com
Port 2229
User df20test
IdentityFile ~/.ssh/id_ecdsa
こんな感じで,複数記載することができます.