私はローカルコンピュータ(Mac)を持っていて、サーバーB(Linux)にアクセスしたいです。サーバーBはサーバーA(Linux)を介してアクセスする必要があります。次のように、ローカルシステムで.ssh / configファイルを変更してトンネルを設定しました。
Host serverB
HostName serverB.com
User Ant
ProxyCommand ssh -q -Y serverA.com -W %h:%p
これはうまくいきました[0]。次に、SSHキーを使用してローカルからserverAへ、serverAからserverBへのパスワードレスログインを設定しました。これは私ができることを意味します
> ssh [email protected]
(serverA)> ssh [email protected]
(serverB)>
すべてが正常です。今私が望むのは、パスワードなしでサーバーBに接続できることです。
> ssh [email protected]
続行する前に、AとBを分離するためのパスワードの入力を求められます。これは次の出力ですssh -v Ant@serverB
。
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /Users/Ant/.ssh/config
debug1: /Users/Ant/.ssh/config line 16: Applying options for serverB
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Executing proxy command: exec ssh -q -Y serverA.com -W serverB.com:22
debug1: identity file /Users/Ant/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Ant/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6
debug1: permanently_drop_suid: 501
[email protected]'s password:
と見ることができます。努力する私のキーを使ってログインしていますが、問題があります。また、私のRSAキーが非標準の場所に保存されることを追加する必要があるので、これを私の.ssh / configファイルに追加しました。
IdentityFile ~/.ssh/key_serverA
どんなアイデアがありますか?
[0]:何らかの理由でユーザー名が正しくないため、機能しなくなりました。パスワードの入力を求められます[Eメール保護]代わりに[Eメール保護]
答え1
User
セクションのオプションは、Host
そのホストと一致する接続にのみ適用され、SSH構成設定が独立して適用されるエージェントなどに対して実行されるコマンドには必ずしも適用されません。
したがって、ProxyCommand
明示的にそこにあるか、それと一致する他のブロックが設定されている必要がAnt@serverA
あります。Host
serverA
User Ant
答え2
この解決策は質問作成者によって提案されました。
解決策が見つかりました。問題は、何らかの理由でsshがAnt(serverAおよびserverBのユーザー名)の代わりにlocal_usernameを使用してserverAにアクセスしようとすることです。この問題を解決するために、configtunnelコマンドを変更して私のユーザー名を明示的に追加しました。
Host serverB HostName serverB.com User Ant ProxyCommand ssh -q -Y [email protected] -W %h:%p
これで問題が解決しました。これで、パスワードのないログインもserverBで動作します! :-)