今日まで、その公開鍵には一度も触れたことがない。
初投稿です.タイトルのネタがわかる方は同志です.仲良くしてください!
[閑話休題]
さて,今回は多段SSH鍵認証を活用して,リモートVSCode環境を構築できたので,その備忘録記事となります.
目次は以下です.
1段ssh
まず1段sshから示します.configは以下のように設定しました.
Host server HostName example.com User rokki IdentityFile ~/.ssh/id_rsa_xxx
# 鍵認証なし ssh rokki@example.com # input password # login! # 鍵認証あり ssh server # login!
手順
1段sshの鍵認証の流れは以下です.ローカル,リモートはそれぞれサーバのクライアント,ホストに対応しています.
- ローカルPCで公開鍵,秘密鍵を作成
- ローカルの公開鍵をリモートPCにコピー
- リモートPCに,コピーした公開鍵を登録
- configファイルの作成
次に,コードと共に解説します.
1. ローカルPCで公開鍵,秘密鍵を作成
local:~$ cd ~/.ssh local:~/.ssh$ ssh-keygen -t rsa -f id_rsa_xxx
homeディレクトリ配下の.sshへ移動し,鍵を作成*1する.fオプションで,作成される鍵のファイル名を指定できる.
local:~/.ssh$ ls
id_rsa_xxx.pub id_rsa_xx
作成された公開鍵,秘密鍵を確認しておく.
2. ローカルの公開鍵をリモートPCにコピー
local:~/.ssh$ scp id_rsa_xxx.pub rokki@example.com:~/.ssh/
# input password
scpコマンドを用いて,作成した鍵をリモートPCの.ssh配下にコピーする.
3. リモートPCに,コピーした公開鍵を登録
catコマンド*2を用いる.
rokki@example.com:~/.ssh$ cat id_rsa_xxx.pub >> authorized_keys
公開鍵の登録が初めてであれば,authorized_keys*3は新規作成される.以前にも登録したことがあれば,追記となる.
必要に応じて*4,authorized_keysの権限を変更する.
# 変更しなくてOK rokki@example.com:~/.ssh/ $ ls -l -rw------- 1 rokki rokki xxxx 4月 11 18:00 authorized_keys # 変更すべき rokki@example.com:~/.ssh/ $ ls -l -rw-rw-r-- 1 rokki rokki xxxx 4月 11 18:00 authorized_keys rokki@example.com:~/.ssh/ $ chmod 600 authorized_keys rokki@example.com:~/.ssh/ $ ls -l -rw------- 1 rokki rokki xxxx 4月 11 18:00 authorized_keys
4. configファイルの作成
再びローカルPCに戻り,configファイルを作成する.
Host server HostName example.com User rokki IdentityFile ~/.ssh/id_rsa_xxx
- Host:任意のホスト名を登録できる.sshでログインする際にこのホスト名を用いる.
- HostName:sshサーバのIPアドレス(xxx.xxx.xxx.xxx)または,ホスト名を指定する.
- User:sshサーバに登録されているユーザ名を指定する.
- IdentityFile:作成した秘密鍵のパスを指定する.デフォルトでは~/.ssh/id_rsa
なお,ホスト名は以下のように確認できる.
rokki@example.com:~ $ hostname example.com
以下のコマンドのみで,リモートPCにログインできれば終了
ssh server
多段ssh
localの環境からserverA,serverBを踏み台にして,serverCへ接続したい場合を想定しています.
結論から示すと,configは以下のように設定しました.
Host serverC HostName ccc.ccc.ccc.ccc User rokki IdentityFile ~/.ssh/id_rsa_xxx Host serverB HostName bbb.bbb.bbb.bbb User rokki IdentityFile ~/.ssh/id_rsa_xxx ProxyCommand ssh -W %h:%p serverC Host serverA HostName aaa.aaa.aaa.aaa User rokki IdentityFile ~/.ssh/id_rsa_xxx ProxyCommand ssh -W %h:%p serverB
この設定で,楽チンログイン!
# 鍵認証なし ssh rokki@aaa.aaa.aaa.aaa # input password # login serverA! ssh rokki@bbb.bbb.bbb.bbb # input password # login serverB! ssh rokki@ccc.ccc.ccc.ccc # input password # login serverC! # 鍵認証あり ssh serverA # login serverC!