Linuxリモートシェル¶
セキュアシェル¶
telnet、ftp、rsh、rcpなどはリモート計算機の操作における認証にパスワードを用い、またパスワードが平文で流れてしまいます。
ネットワークをキャプチャするとパスワードが簡単にわかってしまいます。
そこで、セキュアなリモートシェルであるssh、sftp、scpなどを使います。認証にはパスワードまたは公開鍵が使えます。セキュアシェルではパスワードが暗号化されますが、さらに公開鍵の方が安全性が高いです。
コマンド操作¶
コマンド操作一覧¶
ユーザー名/認証鍵ファイルを別に作成した場合のコマンド操作¶
ローカルマシンのユーザー名とリモートマシンのユーザー名が違う場合、および認証鍵ファイルが違う場合のコマンド操作です。
リモートホスト名: host.example.com
ユーザー名: tom
ポート番号: 50022
認証鍵(秘密鍵)ファイル: ~/.ssh/id_rsa_example_com
ssh¶
~$ ssh tom@host.example.com -p 50022 -i ~/.ssh/id_rsa_example_com <コマンド>
scp¶
~$ scp -P 50022 -i ~/.ssh/id_rsa_example_com tom@host.example.com:arc
便利操作¶
sshが切れても処理を継続する¶
screen¶
screenを使って、ssh作業をssh接続が切れても継続できるようにします。
ケース1) screenをデタッチしてからscreenに再度アタッチする
- sshで接続後、screenコマンドで新規のscreen(仮想端末)を起動
~$ screen
- 作業を実行
- 作業を途中で抜ける時は、Ctrl+a d で仮想端末をデタッチ
- 実行中の仮想端末に接続(アタッチ)
~$ screen -r <ID>
実行中のscreenが1つだけの場合、ID指定を省略可能 - 作業が終わったらCtrl+dで仮想端末をシャットダウン
明示的にscreenをデタッチした場合、screenを実行しているターミナルを終了した場合は、仮想端末がデタッチ状態となるので、新しいターミナルからアタッチが可能です。しかし、ネットワークの障害でsshが切れた場合は、仮想端末がアタッチ状態のままなので、新しいターミナルからアタッチするのに別な方法を取ります。
ケース2)screenで作業中に、ネットワーク障害で接続が切れた場合
- sshで接続後、screenコマンドで新規のscreen(仮想端末)を起動
~$ screen
- 作業を実行
- 作業途中でsshが切断発生
- sshで再度接続をして、screen一覧をチェック
~$ screen -ls
IDは、screen -lsで表示される 13245.pts1.myhost... の数値部分を指定 - Attached状態のscreenに強制接続
~$ screen -d -r <ID>
実行中のscreenが1つだけの場合、ID指定を省略可能