-1

次のような便利なエイリアスがあります。

sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123

これにより、リモート デバイスにすばやくログインし、タブ補完のあるコマンド プロンプトを表示することができます。

しかし、私が常に最初に行うことはcd、別のディレクトリへの移動です。したがって、次のように、コマンドとして行末に追加したいと思います。

sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123 'cd /tmp/Data/fx'

しかし、それを行うと、プロンプトがまったく表示されません! 何もせずにただそこに座っているだけです。次に、これを使用して、コマンドプロンプトを表示させようとしました:

sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123 'cd /tmp/Data/fx; /bin/bash -i'

それはほとんどうまくいきます。

正しいディレクトリに変更し、コマンド プロンプトを表示しました。しかし、タブ補完がなく、上矢印で最新のコマンドが表示されません。

私は何が欠けていますか?

4

1 に答える 1

0
ssh -o [...] 'cd /tmp/Data/fx; /bin/bash -i'

リモート システムでコマンドを実行するように ssh に要求すると、ssh は通常、リモート セッションに PTY (疑似 TTY) を割り当てません。TTYbashがない場合、それ自体を初期化する方法が変更されるため、その行編集機能は有効になりません。-t を指定して ssh を実行すると、セッションの tty を要求できます。

ssh -t -o [...] 'cd /tmp/Data/fx; /bin/bash -i'

常に入力したくない場合は、ローカル ホストの「.ssh/config」ファイルに次の行を追加できます。

RequestTTY yes
于 2015-04-23T14:14:06.360 に答える