概要
WindowsからUbuntuへ公開鍵認証方式でssh接続する方法をメモとして残しておきます。
また、Vscodeを使ったsshについても記載します。
環境
以下の環境で接続を行います。
また、ubuntu側はaptを使います。本環境では、proxyがあるのでそちらの設定も記載していきます。
必要のない方はproxyの設定を飛ばしてください。
それぞれのやることリスト
Windows側
- 公開鍵と秘密鍵の生成
Ubuntu側
- open-sshのインストール
手順
Ubnutu側は作成したばかりであったため、proxyの設定から説明していきます。
この動作が不要な場合は飛ばしていただいて構いません。
また、設定はWindowsとUbuntuを行き来するため、手順の先頭にWindows、Ubuntuと明示は行います。
また、ユーザ名とIPアドレスはそれぞれの環境で置換してください。
Ubuntu: proxyの設定(必要な人のみ)とSSHサーバのインストール
-
proxyの設定
cd etc/apt sudo vi apt.conf
apt.confの中身Acquire::http::proxy “http://proxy_server_name:3128/”; Acquire::https::proxy “http://proxy_server_name:3128/”;
注意
apt.confの後ろの「;」を忘れない -
aptのアップデート
sudo apt update sudo apt upgrade
-
SSHサーバ(openssh)のインストール
sudo apt install -y openssh-server systemctl status ssh
systemctl status sshは、sshサーバが正常に動作しているかを確認しています。緑色の丸かactive(running)が出ていたら正常に動作しています。
ここで一旦Windows側に戻ります。
windows: 疎通確認とsshキー(公開鍵&秘密鍵)の生成
-
パスワード認証でsshができるかを確認
ssh ubuntu@172.21.34.yyy
sshができたらおそらくターミナルの先頭が
PS C:\Users\ユーザネーム> から Ubuntuのユーザネーム@hostネームになります。
その後、exitと入力しwindowsに戻ってください。 -
sshキーを作成します
-
もし、/Users/自分の名前/に.sshディレクトリがない場合の手順
mkdir .ssh cd .ssh ssh-keygen.exe -q -t ed25519 -C "" -N "" -f id_rsa
-
/Users/自分の名前/に.sshディレクトリがある場合の手順
cd .ssh ssh-keygen.exe -q -t ed25519 -C "" -N "" -f id_rsa
ここまで出来たらlsで鍵が生成されているかを確認してください。
- id_rsa: 秘密鍵(絶対に誰にも渡してはいきません)
- id_rsa.pub: 公開鍵(渡しても問題なし)
-
-
公開鍵(id_rsa.pub)をUbuntu側に送信
scp ./id_rsa.pub ubuntu@172.21.34.yyy:~/
ここでUbuntu側に戻ります
Ubuntu: sshサーバの公開鍵認証方式を許可する
-
公開鍵が送信されたかを確認
ls
ホームディレクトかを確認してください。
lsを実行すると、確かにid_rsa.pubがあることを確認 -
公開鍵の設定
- もし、ls -a を実行時に.sshディレクトリがない場合の手順
mkdir .ssh chmode 700 .ssh cp id_rsa.pub ./.ssh/authorized_keys cd .ssh/ chmod 600 authorized_keys
- .sshディレクトリがある場合の手順
chmode 700 .ssh cp id_rsa.pub ./.ssh/authorized_keys cd .ssh/ chmod 600 authorized_keys
このときauthrorized_keysのsをつけ忘れた場合、正常に動作しないことを確認していますので、気を付けてください。
- もし、ls -a を実行時に.sshディレクトリがない場合の手順
-
ssh-configの設定
sudo vi /etc/ssh/sshd_config
# PubkeyAuthentication no → PubkeyAuthentication yes # PasswordAuthentication yes → PasswordAuthentication no
vi /etc/ssh/sshd_configを実行した際に何も記載がないファイルが生成された場合は、ホームディレクトリに戻ってください
-
sshサーバの再起動
systemctl restart ssh
ここでwindowsに戻ります。
Windows: 公開鍵認証方式でsshができるかを確認
ssh ubunutu@172.21.34.yyy
これで公開鍵認証で接続ができると思います。
番外編: Vscodeでのssh
VscodeのRemote-sshを使ってsshを行うと、サーバに接続できずリトライエラーになるときがあるそうです。
解決策としては、Remote-sshのバージョンがv0.108.0になっているかを確認してください。
人によっては一つ上のバージョン(Pre-Release)がインストールされており、正常に動作しない時があるそうです。
-
Remote-sshのインストール(このときバージョンがv0.108.0か確認)
すでにインストールしている場合はUninstallの隣にある↓を押すとInstall Another Versionが出るのでインストールしなおしてください。
-
sshを行っていく
-
パソコンマークを押し、上のほうに出てくるSelect SSH configuration file to update を、C:\Users\自分の名前.ssh\configを選択する。
-
configファイルの設定を行う
configHost わかりやすい名前(xxx_ubuntuなど) HostName 172.21.34.yyy User ubuntu(ubuntu側のユーザネーム) Port 22 IdentitiesOnly yes TCPKeepAlive yes IdentityFile /Users/自分の名前/.ssh/id_rsa
-
左下の><をクリックし、Connect to Hostを押す。
-
Select configured SSH host or enter@hostを押すと、Hostで設定した名前が出てくるので、クリック。
-
新しい画面が出ると思います。その後、上にLinux/Windows/Macと選択できると思います。Linuxを選択します。
-
接続完了
これでできない場合は、別の原因があるかもしれません。
vscodeのproxy設定などなど。参考になりそうな記事を下に記載しておきます。 -
おわりに
意外と設定に時間がかかったのと、Vscodeの設定に時間を取られたので同じ悩みを持っている人の助けになれば幸いです。
バージョンを見ることは大切ですね。
間違い等がございましたら、コメント等でお知らせください。
最後まで、閲覧していただきありがとうございました。
参考文献
- @ssc-wkani(可兒 航)."WindowsマシンとVirtualBox(Ubuntu)で公開鍵認証のssh接続を勉強してみた". 2023-01, https://qiita.com/ssc-wkani/items/a5aa189aa2bcf2590252, (参照 2024-04-18).
- @overflowfl."ssh-keygenを用いて秘密鍵と公開鍵を作る(Windows10とLinuxの違い)". 2022-04, https://qiita.com/overflowfl/items/14a2486df85fd7efac85, (参照 2024-04-18).
- ぼん."公開鍵認証を用いてVSCodeの「Remote - SSH」を使う". 2022-05, https://zenn.dev/bon/articles/vscode-remote-ssh, (参照 2024-04-18).
- @toim(TO im)."VSCodeからSSH接続できなくなった対処(2024年1月アップデートの変更)". 2022-02, https://qiita.com/toim/items/6f2d03fc14710fc4e5d8, (参照 2024-04-18).