Ubuntuから別のサーバにSSHで接続を行う際に、接続先の設定を保存しておいて簡単に接続できるようにする方法です。
「~/.ssh/config」で簡単SSH接続
SSHで接続を行う際にポート番号を変更していたり鍵認証方式を採用している場合、毎回下記のようなコマンドを手入力するのはとても面倒くさいです。
ssh -p ポート番号 -i 秘密鍵 ユーザ@サーバ名 ssh -p ポート番号 -i 秘密鍵 -l ユーザ サーバ名
「~/.ssh/config」に接続サーバごとの設定を記述しておくことで、長い引数を入力せずにSSH接続を行うことができるようになります。
ssh 設定名
ちなみに、この設定はscpやsftpを使用するときにも使用できます。
sftp 設定名 scp 設定名:ファイルパス コピー先 scp コピー元 設定名:ファイルパス
パスワード認証時のパスワードや秘密鍵のパスフレーズはどちらも設定することが出来ないため、接続時に入力が求められます。
「~/.ssh/config」作成
まずはユーザのホームディレクトリに「.ssh」フォルダがない場合は作成を行います。
すでに作成されている場合はこの作業はスキップしてください。
$ mkdir ~/.ssh $ chmod 700 ~/.ssh
「~/.ssh/config」ファイルを作成し、接続先の設定を行います。
$ vi ~/.ssh/config
設定項目
基本的な設定項目は下記の通りとなります。
SSH接続に鍵認証方式を使用している場合は、「IdentitiesOnly yes」と「IdentityFile」で秘密鍵の場所を指定する必要があります。
「TCPKeepAlive yes」と「ServerAliveInterval 60」は一定時間操作を行わなかった時にSSH接続が自動切断されないようにする設定です。
Host 設定名_01 HostName 接続先サーバアドレス User 接続ユーザ Port SSHポート番号 TCPKeepAlive yes ServerAliveInterval 60 IdentitiesOnly no ##### 鍵認証方式の設定 ##### Host 設定名_02 HostName 接続先サーバアドレス User 接続ユーザ Port ポート番号 TCPKeepAlive yes ServerAliveInterval 60 IdentityFile 秘密鍵 # 秘密鍵を指定 IdentitiesOnly yes # 鍵認証方式の場合 yes
設定例
「~/.ssh/config」の設定例です。
接続先サーバの設定は複数設定することができます。
Host www HostName www.example.com User webadmin Port 22222 TCPKeepAlive yes ServerAliveInterval 60 IdentityFile ~/.ssh/id_ed25519_www IdentitiesOnly yes Host dev HostName 192.168.0.254 User tamohiko Port 22 TCPKeepAlive yes ServerAliveInterval 60 IdentityFile ~/.ssh/id_ed25519_dev IdentitiesOnly yes
パーミッション設定
「~/.ssh/config」の設定が完了したら、自分自身だけが読み書き出来るようにパーミッションを変更しておきます。
$ chmod 600 config
接続確認
すべての設定が完了したら、実際に接続できる確認を行ってください。
$ ssh www $ ssh dev
コメント