SSH接続後に切断せずにコマンドを実行するには?

SSH接続後に切断せずにコマンドを実行するには?

SSHセッションを自動的に閉じずにSSHを介して別のコンピュータに接続した後、自動的にコマンドを実行したいと思います。

インターネットを検索した後、いくつかの解決策を見つけましたが、それらのどれも私が望む方法で動作しませんでした。

ssh bla@bla "ls"

これにより、リモートシステムでコマンドが実行され、出力が表示され、接続がls閉じます。

また、次のようにSSH設定ファイルを編集してみました。

Host bla
        HostName bla
        User bla
        IdentityFile ~/.ssh/key
        RemoteCommand ls
        RequestTTY force 

同じ問題です。 SSHを介して接続lsし、コマンドを実行して出力を表示してから終了します。このRequestTTYオプションも役に立ちません。

ssh bla@bla "ls ; bash"

実行後は切断されませんが、ls端末インタフェース全体が表示されず、一部しか表示されませんme@machine:~$ thing

私が本当に欲しいもの:

bashエイリアスまたは.ssh/configリモートシステムに接続する簡単なコマンドを入力し、そこからコマンドを実行してターミナルを開いたままにすることができます。基本的に私が手でやるのと同じです。

タイプ

ssh blah@blah

その後、接続したら入力します。

ls

ベストアンサー1

ssh bla@bla "ls ; bash"

実行後に接続は切断されませんが、ls端末インタフェース全体が表示されず、内容が表示されないいくつかの簡単なコマンドラインのみが表示されますme@machine:~$

ls ; bash上記のコマンドを指定した場合、SSH サーバーは擬似端末を提供しません。あなたはこれを観察しました。

一方、ssh bla@bla単独ではデフォルトで擬似端末が割り当てられます。これがあなたが望むものです。疑似端末割り当てを強制するには、-tまたはを使用しますRequestTTY

このRequestTTYオプションも役に立ちません。

単純なリモートコマンドは役に立ちませんls。必要ls; bashまたは類似しています。

ttyを要求しても要求しないようですbashbash後で要求すると、lsttyは要求されません。次の両方が必要です。

ssh -t bla@bla "ls; bash"

擬似ls端末も使用されます。 「より広い絵」セクションを読んでください。私の答え違いを知ってください(特に「異常な点がある」部分)。

おすすめ記事