概要
リモートマシン上で開発が行える VS Code の拡張「Remote Development」で SSH 接続した際に、頻繁に出るパスワード認証を出ないようにする方法について解説します。
手順
1. 公開鍵及び秘密鍵をログイン元の PC で作成する。
「Power Shell」を起動し、「ssh-keygen」を実行します。 いくつか聞かれますが、すべてデフォルトで大丈夫です。
> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\hoge/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\hoge/.ssh/id_rsa.
Your public key has been saved in C:\Users\hoge/.ssh/id_rsa.pub.
完了すると、%HOMEPATH%\.ssh
以下に秘密鍵 id_rsa
と公開鍵 id_rsa.pub
が作成されます。
2. 公開鍵をリモートマシンに登録する。
リモートマシンにログインし、パーミッション700で ~/.ssh
を作成します。
mkdir ~/.ssh
chmod 700 ~/.ssh
~/.ssh
以下に作成した公開鍵 id_rsa.pub
を配置します。(SCP コマンドなどで転送してください。)
配置できたら、それを authorized_keys
に登録します。
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
3. SSH サーバーで公開鍵認証を許可する
/etc/ssh/sshd_config
を編集し、公開鍵認証を許可するように PubkeyAuthentication yes
に変更します。変更後、SSH サーバーを再起動します。
ディストリビューションやそのバージョンによって、設定ファイルの名前や中身が違うので、/etc/ssh
以下にある設定ファイルを確認して適宜対応してください。
Ubuntu 18.04 では以下で置換できると思いますが、念のため、ファイルを開いて、PubkeyAuthentication yes
が追加できたことを確認してください。
sudo sed -i -e "s/#PubkeyAuthentication/PubkeyAuthentication/g" /etc/ssh/sshd_config
sudo service ssh restart
上記の手順で設定は完了です。次回 SSH サーバーに接続した際にパスワードを聞かれなかった場合は上手く設定できています。
4. 接続する
そのホストアドレスへ以前にアクセスしたことがある場合は、Ctrl + Shift + @
で「Open Configulation File…」で config
ファイルを開き、該当ホストの設定を削除してください。
Ctrl + Shift + @
で「Add New SSH Host…」コマンドを選択し、ssh <ユーザー名>@<ホスト> -i <秘密鍵 id_rsa のパス>
で追加後に、「Connect to Host…」コマンドでアクセスします。
SSH unable to connect – error spawn UNKNOWN
接続した際に SSH unable to connect - error spawn UNKNOWN
というエラーが発生する場合、以前にそのホストにアクセスした際の情報が known_hosts
に残っているのが原因の可能性があります。一旦、すべての VS Code のウィンドウを終了し、C:\Users\><ユーザー名>\.ssh\known_hosts
を削除してください。
コメント