.ssh/config
ゲートウェイを介してホストに接続するために使用したいです。 RSAキーを設定したくないので、パスワードを使用する必要があります。私は以前にパスワードなしでこの種のジャンプをしたことがあります。それでは、パスワードでこれを行います。
私に役立つ直接コマンドは次のとおりです。
sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" myusername@myip
ゲートウェイでキー認証を設定しました。詳細は.ssh / configにあります。で設定するために、.ssh/config
以下を試しました。
Host h_act
<username, hostname, port etc.>
ProxyCommand ssh gateway -W %h:%p
Host h
ProxyCommand sshpass -p mypassword ssh h_act
しかし、試してみるとssh h
取得しますPseudo-terminal will not be allocated as stdin is not a terminal
。 SSHを使用しようとすると、-vtt
奇妙なメッセージが表示されますが、端末は表示されません。 ProxyCommandチェーンがある場合、またはnetcat/nc
ProxyCommandチェーンが1つしかない場合にssh -W
機能することを知っています。しかし、ここではうまくいきません。 sshpassなしで最後のコマンドを試しても同じエラーが発生します。私はこれが後続のコマンドに対するProxyCommandのいくつかの期待に関連していると思いますが、それを実装することはできません。
どんなアイデアがありますか?
答え1
あなたの設定がその行と同じではないと思います。次のようになります。
ssh -o ProxyCommand='sshpass -p mypassword ssh -o ProxyCommand="ssh gateway -W %h:%p" h_act' myusername@myip
つまり、sshpass
ProxyCommand内で実行中です。
しかし、私はこれがうまくいかないと思います。クライアントを疑似端末にsshpass
ラップして、ssh
パスワードが実際にファイルやエンドユーザー入力以外のものから出てくることを隠します。これを行うには、ssh
クライアントが実行される前に実行する必要があります。
最初のコード行が機能していても毎回入力したくない場合は、sshpass
シェルスクリプトでラップできます。
#/bin/sh
sshpass -f passwordfile ssh -o ProxyCommand="ssh gateway -W %h:%p" "$@"
それからそのようなものを実行してくださいsshscript myusername@myip
。
さて、使用しないでください。sshpass -p
クライアント(および)の実行中に出力にパスワードが表示されます。環境を介してパスワードを渡すか、ファイルからパスワードを読むことをお勧めします。ps
ssh
sshpass
sshpass -e
sshpass -f file