ssh接続に向けた事前準備
接続元 |
ssh-keygen等で秘密鍵と公開鍵を作成する。該当の接続先にどの鍵を使うかを個別に設定したい場合等には/home/ユーザ名/.ssh/configを設定すると良い。 |
接続先 |
/home/ユーザ名/.ssh/authorized_keysに、接続元の公開鍵情報を登録する。 登録方法としては、直接authorized_keysを書き換えて秘密鍵情報を追記する方法やssh-copy-id(ローカルの~/.ssh/id_rsa.pubの内容をauthorized_keysに追記してくれる)等のコマンドを使用する方法がある。 |
なお、鍵の変換が必要な場合は下記を参考にすると良い。
ssh接続方法
ssh ユーザ名@接続先でアクセスする。
ログインしているユーザ名と同じ名前で接続する時は、ユーザ名@は省略可能。
使用する秘密鍵を指定する場合は-iオプションを利用する。
ユーザ指定は-o User=ユーザ名でも可能。
ssh接続しようとした際にWARNINGを表示した場合
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
のエラーが出た場合には、接続先の鍵を変更した覚えが無ければ
サーバの成り済ましの可能性があるので注意。
ただし、サーバを置き換えていることが分かっている等、
信用できる接続先である場合は、
.ssh/known_hostsの該当部分(*)をエディタ直接削除する(非推奨)か
ssh-keygen -R ホスト名で該当ホストの情報をリセットすると良い。
(*)known_hostsが暗号化されていて、該当ホストが何行目か
分からない場合はssh-keygen -F ホスト名とする。
sshの接続先で実行したコマンドの結果をスクリプトで利用する
下記オプションが使える。
-n |
こちらのサイトに記載のあるように、while等のループで抜けてしまう問題を防ぐ |
-o StrictHostKeyChecking=no |
鍵認証で止まってしまう問題を防ぐ |
-o ConnectTimeout |
タイムアウトを設定する |
-o ProxyCommand |
プロキシ経由でつなぐ。踏み台等を挟む多段回sshで活用できる。(例:ssh -o ProxyComand='ssh %h:%p ユーザ名@踏み台ホスト名' ユーザ名@宛先ホスト名) |
リモートで実行させる時のエスケープ等については、
こちらのサイトも参考にしたい。
ポートフォワーディングする
ssl -L ローカルマシンのポート:転送先IP:転送先Port ユーザ名@経由するマシン
な感じでできる。
例えば、ローカルマシンでhttp://localhost:12345とした時に、
VirtualBoxのマシンのhttp://localhost:8080にフォワーディングしたい場合は以下。
ssh -L 12345:localhost:8080 test@192.168.56.XXX
sshのTCP接続を制御し、2回目以降の接続を早める
-o ControlMaster=auto |
ControlMasterを使う |
-o ControlPersist=60s |
ControlMaster用のソケットファイルを削除する秒数を指定 |
-o ControlPath=/path/to/socketfile |
ソケットファイルの場所を指定 |
最終更新:2021年03月28日 12:11