環境
接続元 | Mac |
接続先 | Ubuntu 22.04 LTS Server |
接続元(Mac)の作業手順
前準備
Macでターミナルアプリを起動します。
公開鍵認証用のキーペアを作成
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_ubuntu -C ""
RSAよりも強固でパフォーマンスも良い暗号化アルゴリズムである “Ed25519” を使用します。
実行するとMacの “~/.ssh” ディレクトリの中に、次の2つのファイルが作成されます。
ファイル名 | 用途 |
---|---|
id_ed25519_ubuntu | 秘密鍵 |
id_ed25519_ubuntu.pub | 公開鍵 |
ssh-keygenのオプションについて
オプション | 意味 |
---|---|
-t ed25519 | ed25519暗号化アルゴリズム |
-f ~/.ssh/id_ed25519_ubuntu | ファイル名を”id_ed25519_ubuntu”にする。 (指定しない場合、”~/.ssh/id_ed25519″になる) |
-C "" | ファイル内末尾のコメント部を記載しない。 (指定しない場合、コメント部に「<接続元ユーザー名>@<接続元ホスト名>」が記載される) |
公開鍵をサーバにコピーする
ssh-copy-id -i ~/.ssh/id_ed25519_ubuntu.pub <接続先ユーザー名>@<接続先ホスト名orIPアドレス>
作成した公開鍵を接続先のサーバにコピーします。
ssh-copy-idのオプションについて
オプション | 意味 |
---|---|
-i ~/.ssh/id_ed25519_ubuntu.pub | コピーする公開鍵ファイルの場所を指定します。 |
実際に接続できるか確認する
ssh -i ~/.ssh/id_ed25519_ubuntu <接続先ユーザー名>@<接続先ホスト名orIPアドレス>
# ssh接続できることを確認
exit
公開鍵認証でssh接続ができることを確認したら、一旦exitでssh接続を終了します。
sshコマンドのオプションについて
オプション | 意味 |
---|---|
-i ~/.ssh/id_ed25519_ubuntu | 秘密鍵ファイルを指定します。 |
sshコマンドを短縮する (エイリアス定義)
毎回、上の長いコマンドを使うのは大変なので、エイリアス定義を追加します。
vim ~/.ssh/config
configファイルを作成して、以下の内容を記入します。<接続先エイリアス名>
には接続先名として自分が分かりやすい名前を指定してください。
Host <接続先エイリアス名>
HostName <接続先ホスト名orIPアドレス>
User <接続先ユーザー名>
Port 22
IdentityFile ~/.ssh/id_ed25519_ubuntu
【補足】vimで編集開始するときは i キーを押して編集(Insert)モードに入ります。
【補足】vimで編集が終わった後はESC
キーを押したあと「:wq
」で保存して抜けます。
接続先のUbuntuサーバーに接続する
ssh <接続先エイリアス名>
これで公開鍵認証でのsshログインが簡単にできるようになりました。
接続先(Ubuntu)の作業手順
パスワード認証を無効化する
まだパスワード認証が有効になっているので、公開鍵認証を使わなくてもパスワードが分かればssh接続できてしまいます。以下の操作でパスワード認証を無効にします。
ssh接続の設定ファイルを開き、編集します。
sudo vim /etc/ssh/sshd_config
編集前
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes 👈 ここのコメントアウト(#)を外して、noにする。
編集後
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
sshdサービスを再起動する
sudo systemctl restart sshd
sshd_configの設定内容を反映するため、sshd (ssh接続を受ける常駐プログラム) を再起動します。
以上です!
コメント
コメント失礼します。
「公開鍵をサーバにコピーする」のコマンドを実行すると、[zsh: parse error near `\n’]というエラーが表示されるのですが、何が原因でしょうか。
お手数をおかけしますが、よろしくお願いします。
Tanakaさん、コメントありがとうございます。
コマンド内の<接続先ユーザー名>と<接続先ホスト名orIPアドレス>の部分は、山括弧は外して書き換えてください。
ssh-copy-id -i ~/.ssh/id_ed25519_ubuntu.pub mulong@192.168.8.8
のようなイメージです!
他に原因がある可能性もあるので、解決できない場合はまたコメントください。
ご返信ありがとうございます。
山括弧をつけたままでした。
ありがとうございます🙏
[…] GPUサーバーに接続をしたい環境にて(今回はMac)、公開鍵認証用のキーペアを作成します。下記では、RSAよりも強固でパフォーマンスも良い暗号化アルゴリズムである ed25519 を使用しています。ed25519を使用したssh接続は”Macから公開鍵認証でSSHログインする [Ubuntu 22.04 LTS]“を参考にしました。 […]