LoginSignup
1
0

Windows11からUbuntu22.04(Esxi)へssh接続(公開鍵認証方式)

Last updated at Posted at 2024-04-18

概要

WindowsからUbuntuへ公開鍵認証方式でssh接続する方法をメモとして残しておきます。
また、Vscodeを使ったsshについても記載します。

環境

以下の環境で接続を行います。
また、ubuntu側はaptを使います。本環境では、proxyがあるのでそちらの設定も記載していきます。
必要のない方はproxyの設定を飛ばしてください。

aaa.drawio.png

それぞれのやることリスト

Windows側

  • 公開鍵と秘密鍵の生成

Ubuntu側

  • open-sshのインストール

手順

Ubnutu側は作成したばかりであったため、proxyの設定から説明していきます。
この動作が不要な場合は飛ばしていただいて構いません。
また、設定はWindowsとUbuntuを行き来するため、手順の先頭にWindows、Ubuntuと明示は行います。
また、ユーザ名とIPアドレスはそれぞれの環境で置換してください。

Ubuntu: proxyの設定(必要な人のみ)とSSHサーバのインストール

  1. 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の後ろの「;」を忘れない

  2. aptのアップデート

    sudo apt update
    sudo apt upgrade
    
  3. SSHサーバ(openssh)のインストール

    sudo apt install -y openssh-server
    systemctl status ssh
    

    systemctl status sshは、sshサーバが正常に動作しているかを確認しています。緑色の丸かactive(running)が出ていたら正常に動作しています。

ここで一旦Windows側に戻ります。

windows: 疎通確認とsshキー(公開鍵&秘密鍵)の生成

  1. パスワード認証でsshができるかを確認

    ssh ubuntu@172.21.34.yyy
    

    sshができたらおそらくターミナルの先頭が
    PS C:\Users\ユーザネーム> から Ubuntuのユーザネーム@hostネームになります。
    その後、exitと入力しwindowsに戻ってください。

  2. 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: 公開鍵(渡しても問題なし)
  3. 公開鍵(id_rsa.pub)をUbuntu側に送信

    scp ./id_rsa.pub ubuntu@172.21.34.yyy:~/
    

ここでUbuntu側に戻ります

Ubuntu: sshサーバの公開鍵認証方式を許可する

  1. 公開鍵が送信されたかを確認

     ls
    

    ホームディレクトかを確認してください。
    lsを実行すると、確かにid_rsa.pubがあることを確認

  2. 公開鍵の設定

    • もし、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をつけ忘れた場合、正常に動作しないことを確認していますので、気を付けてください。

  3. ssh-configの設定

     sudo vi /etc/ssh/sshd_config
    
    # PubkeyAuthentication no → PubkeyAuthentication yes
    # PasswordAuthentication yes → PasswordAuthentication no
    

    vi /etc/ssh/sshd_configを実行した際に何も記載がないファイルが生成された場合は、ホームディレクトリに戻ってください

  4. 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)がインストールされており、正常に動作しない時があるそうです。

  1. Remote-sshのインストール(このときバージョンがv0.108.0か確認)

    1. Extensions(左側にある4つの正方形 or Ctrl + Shift + X)に移動
    2. remoteと打ち、Remote- SSHをインストール
      スクリーンショット 2024-04-18 205518.png

    すでにインストールしている場合はUninstallの隣にある↓を押すとInstall Another Versionが出るのでインストールしなおしてください。

  2. sshを行っていく

    1. パソコンマークを押し、上のほうに出てくるSelect SSH configuration file to update を、C:\Users\自分の名前.ssh\configを選択する。
      スクリーンショット 2024-04-18 210207.png

    2. configファイルの設定を行う

      config
      Host わかりやすい名前(xxx_ubuntuなど)
          HostName 172.21.34.yyy
          User   ubuntu(ubuntu側のユーザネーム)
          Port   22
          IdentitiesOnly yes
          TCPKeepAlive yes
          IdentityFile  /Users/自分の名前/.ssh/id_rsa
      
    3. 左下の><をクリックし、Connect to Hostを押す。

    4. Select configured SSH host or enter@hostを押すと、Hostで設定した名前が出てくるので、クリック。

    5. 新しい画面が出ると思います。その後、上にLinux/Windows/Macと選択できると思います。Linuxを選択します。

    6. 接続完了

    これでできない場合は、別の原因があるかもしれません。
    vscodeのproxy設定などなど。参考になりそうな記事を下に記載しておきます。

おわりに

意外と設定に時間がかかったのと、Vscodeの設定に時間を取られたので同じ悩みを持っている人の助けになれば幸いです。
バージョンを見ることは大切ですね。
間違い等がございましたら、コメント等でお知らせください。
最後まで、閲覧していただきありがとうございました。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0