はじめに
自PCからLinuxにSSH接続する際にパスワード入力なしで、コマンドプロンプトからssh ホスト名
というコマンドのみでアクセスできる方法について紹介します。
本手法を用いるメリットはパスワードの管理が楽になることです。
windows側の処理
- OpenSSHのインストール
以下コマンドをコマンドプロンプト
orPowershell
で実行してOpensshがインストールされているか確認してください。
ssh -V
インストールされている場合は以下処理は不要です。インストールされていない場合は、Powershell
を管理者モードで開いてください。
以下コマンドでインストールが可能です。
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
以下のような表示になればインストール成功です。
Path :
Online : True
RestartNeeded : False
-
パスを通す
以下のように環境変数のシステム環境変数
→path
→編集
→新規作成
の順に進み以下のようにC:\Windows\System32\OpenSSH\
のパスを追加する。 -
公開鍵・秘密鍵の生成
まず、鍵を保管するディレクトリ(C:\Users\xxxx\.ssh
)を作成します。
コマンドプロンプト
orPowershell
を開き、上記パスに移動します。
以下コマンドで公開鍵を作成します。
ssh-keygen -t rsa -C comment -f <ファイル名>
パスフレーズの入力を求められますが、設定しない場合はEnter
で進んでください。以下の表示になればOKです。
C:\Users\xxxx\.ssh
に以下のファイルがあればOK
<ファイル名> :秘密鍵
<ファイル名>.pub :公開鍵
秘密鍵は大切に保管しておいてください。
- 公開鍵をSSH接続したいマシンに転送
上記の処理で作成した公開鍵をSSH接続したいマシンに転送します。
C:\Users\xxxx\.ssh
をカレントディレクトリにして、以下コマンドを実行してください。
scp <ファイル名>.pub name@xxx.yyy.zzz.zzz:<ファイル転送ディレクトリ>
上記はserver_name
にファイルを転送する例です。適宜マシンに応じて変えてください。パスワードの入力が求められますので、SSH接続したいマシンのパスワードを入力してください。
- configファイルの作成
C:\Users\xxxx\.ssh
ディレクトリにconfigファイルを作成します。内容は以下のようにしてください。
Host server_name1
HostName xxx.yyy.zzz.zzz
User name
Port 22
IdentityFile C:\Users\xxx\.ssh\<ファイル名>
ServerAliveInterval 60
マシンが増えると以下のようになっていきます。
Host server_name1
HostName xxx.yyy.zzz.zzz
User name
Port 22
IdentityFile C:\Users\xxx\.ssh\<ファイル名>
ServerAliveInterval 60
Host server_name2
HostName xxx.yyy.zzz.zzz
User name
Port 22
IdentityFile C:\Users\xxx\.ssh\<ファイル名>
ServerAliveInterval 60
Host server_name3
HostName xxx.yyy.zzz.zzz
User name
Port 22
IdentityFile C:\Users\xxx\.ssh\<ファイル名>
ServerAliveInterval 60
この設定を記述することで、ssh server_name1
と入力することでssh接続できるはずです。(##ssh接続したいマシン側の処理を行っている必要があります。##)
参考文献
- Windows 用 OpenSSH の概要^
- Qiita : Windows 10 に OpenSSH サーバをインストールする
- Qiita : Windows -> Linux へssh接続で公開鍵認証を実装
SSH接続したいマシン側の処理
- サーバにアクセス
以下コマンドをコマンドプロンプト
orPowershell
でサーバにssh接続してください。
ssh name@xxx.yyy.zzz.zzz
- 公開鍵の登録
上記で転送したファイルを~/.ssh
に移動します。
cd <ファイル転送ディレクトリ>>
chmod 600 <ファイル名>.pub
sudo mv <ファイル名>.pub ~/.ssh
既に~/.ssh
にauthorized_keys
ファイルが存在すれば以下コマンドを実行してください。
cat <ファイル名>.pub >> authorized_key
authorized_keys
が存在しない場合は以下コマンドを実行してください。
mv <ファイル名>.pub authorized_key
- configファイルの設定
以下の設定は確認しておいてください。
以下は、公開鍵の場所を指定する設定です。
AuthorizedKeysFile .ssh/authorized_keys
以下は公開鍵認証をみとめるかどうかのパラメータでデフォルトでyesになっているはずです。なっていない場合は以下のコメントアウトを解除してください。
#PubkeyAuthentication yes
以下はパスワード認証を認める設定です。デフォルトでyesのはずです。
#PasswordAuthentication yes