- ターミナルを開きます。タイプします。
ssh-keygen -t rsa
また、DSA (Digital Signing Algorithm) 技術を使用して公開鍵/秘密鍵を作成することも可能です。
ssh-keygen -t dsa
注:DSAとRSAの安全性については、多くの議論がなされています。私見ですが、よほどこだわりがあり、2つの技術の技術的な詳細を掘り下げるのが好きでない限り、どちらを選んでも問題ないと思います。どちらも問題なく使えるでしょう。
-
- 次の画面で、鍵を保存する場所を尋ねるプロンプトが表示されるはずです。デフォルトの保存場所は、ホームディレクトリの .ssh フォルダです。Enter`を押して、デフォルトの設定を受け入れます。
2.次の画面で、鍵の保存場所を尋ねるプロンプトが表示されます。
3. リモートホストに接続するためのパスフレーズではなく、秘密鍵を解除するためのパスフレー ズを入力するよう促されますので、あなたの秘密鍵を手に入れたとしても、誰もリモートサーバーに アクセスできないようにします。パスフレーズは任意です。空白にする場合は、Enter
を押してください。
ssh-copy-id username@remote-host-ip-address
- リモートホストにログインし、SSH設定ファイルを編集します。
ssh ユーザー名@リモートホスト-IPアドレス
sudo nano /etc/ssh/sshd_config
設定ファイルをスクロールダウンして、以下の属性が正しく設定されていることを確認します。
RSAAuthentication yes
PubkeyAuthentication yes
パスワード認証 no
Ctrl+
O でファイルを書き込んで保存し、
Ctrl+
X` でファイルを閉じます。
sudo systemctl restart ssh
これで完了です。これで、以下のコマンドでリモートホストに接続できるようになりました。
ssh ユーザー名@リモートホストのIPアドレス
よくある質問
SSH鍵をリモートサーバーにコピーしたら、“Permission Denied “というエラーが発生しました。
この問題は、リモートホストの “.ssh” フォルダの問題である可能性が高いです。デフォルトでは、SSH デーモンは、その設定フォルダと “authorized_keys” ファイルに正しいパーミッション・ビットがない場合、すべての着信接続を拒否します。
ファイルやフォルダのパーミッションを変更するには、リモートマシンのローカルコンソールにアクセスし、あなたの「/home」ディレクトリに移動して実行します。chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys. 最後に、新しい設定を適用するためにデーモンを再起動します。sudo systemctl restart ssh
.
同じリモートサーバに複数のSSH鍵を作成できますか?
はい!ただし、ssh-keygen -f /home/$USER/.ssh/filename
を実行して、マシン内の各SSH鍵が一意のファイル名であることを確認する必要があります。
それはさておき、ssh -i /home/$USER/.ssh/filename username@remote.host.ip.address
を実行して、リモートホストにログインするために使用するキーを指定することを確認します。
新しいSSH鍵を古い鍵のあるリモートホストにインポートすることは可能ですか?
はい、可能です。まず、新しい鍵を SSH 認証エージェントにインポートします: ssh-add
です。次に、古いマシンにログインし、同じ認証エージェントにその鍵をインポートします: ssh -A old.machine.ip.address && ssh-add -c
.
最後に、Ctrl
+ D
を押して古いマシンを離れ、新しい鍵と古い鍵の両方でリモートホストに接続します。