node1
NATの背後にあるノードにアクセスするためにリバースSSHトンネルを設定しました。myEC2
仲介者として機能するようにEC2インスタンスを設定しました。私の観点からは、laptop
アクセスしたい場合はnode1
EC2にSSHを接続し、ノードにSSHを接続する必要があります。
ワークフローは次のとおりです。
- で
node1
以下を実行する必要がありますssh -i key.pem -R 3000:localhost:22 ubuntu@myEC2
。これは常にサービス内で実行されます。 - 私の
laptop
SSHからEC2へ:ssh ubuntu@myEC2
- EC2に入った後:
ssh xavier@localhost -p 3000
- 私も入れてください
node1
!
node1
私のデバイスから直接ログインするために使用できるSSH設定でこのワークフローを表現する方法を探しています。laptop
。これは、node1
Visual Studio Code用のリモートSSH拡張機能を介してアクセスするのに役立ちます。
私は次のことを試しました:
Host node1
Hostname myEC2
User ubuntu
Port 3000
IdentityFile key.pem
ところがダメなのが、Port
そうしなければなら22
ないからだと思います3000
。ワークフローをどのように表現するのかわかりません。調べてみましたが、ProxyJump
これが私が探しているものであるかどうかはわかりませんでした。
どんな提案でも歓迎します! =D
編集#1:Stéphaneのアドバイスに従って、次のssh_configファイルを入手しました。
Host myEC2
Hostname <myEC2_IP>
User ubuntu
Port 22
IdentityFile ec2_key.pem
Host node1
Hostname localhost
User xavier
Port 3000
IdentityFile /path/to/node1-id_rsa
ProxyJump ubuntu@myEC2
myEC2
何の問題もなくSSHに接続することはできません。node1
助けssh -p 3000 -J ubuntu@myEC2 xavier@localhost
てくれてありがとう。これが-v
SSHにフラグを追加した結果です。
xaviermerino@Xaviers-MBP .ssh % ssh doc
debug1: Executing proxy command: exec ssh -l ubuntu -W '[localhost]:3000' myEC2
debug1: identity file node1-id_rsa type -1
debug1: identity file node1-id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.1
debug1: Connecting to myEC2 [myEC2_IP_ADDRESS] port 22.
debug1: Connection established.
debug1: identity file ec2_key.pem type -1
debug1: identity file ec2_key.pem-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
debug1: match: OpenSSH_8.2p1 Ubuntu-4ubuntu0.2 pat OpenSSH* compat 0x04000000
debug1: Authenticating to myEC2_IP_ADDRESS:22 as 'ubuntu'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:/U4HE+zUBFNZJgxDM6lWDW7FX8GSHXWYc/fMEyOvMlw
debug1: Host 'myEC2_IP_ADDRESS' is known and matches the ECDSA host key.
debug1: Found key in /Users/xaviermerino/.ssh/known_hosts:226
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: ec2_key.pem explicit
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[email protected],ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected]>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: ec2_key.pem
debug1: Authentication succeeded (publickey).
Authenticated to myEC2 ([IP_Address_Goes_Here]:22).
debug1: channel_connect_stdio_fwd localhost:3000
debug1: channel 0: new [stdio-forward]
debug1: getpeername failed: Bad file descriptor
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Remote: /home/ubuntu/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
channel 0: open failed: connect failed: Connection refused
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
sshd_config
これが何を意味するのかよく分からない。これはEC2の設定に関連していますか?これが私がそこに持っているものです:
#AllowAgentForwarding yes
#AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
編集#2:誰かがコンピュータをシャットダウンしました。今大丈夫!この問題を調査する人のために要約します。この問題を解決するには、次のものが必要です。
Host myEC2
Hostname <myEC2_IP>
User ubuntu
Port 22
IdentityFile ec2_key.pem
Host node1
Hostname localhost
User xavier
Port 3000
IdentityFile /path/to/node1-id_rsa
ProxyJump ubuntu@myEC2
それだけです! @StephaneChazelas ありがとう
答え1
あなたは実際にmyEC2
使用していますジャンプホスト。
node1
次のコマンドを使用して、ノートブックからSSH経由で接続できます。
ssh -p 3000 -J ubuntu@myEC2 xavier@localhost
そのssh_config
項目は次のとおりです。
Host node1
Hostname localhost
User xavier
Port 3000
IdentityFile key.pem
ProxyJump ubuntu@myEC2
確認のためのものがIdentityFile
1つありますnode1
。に1つを指定するには、別の項目をmyEC2
使用できます。Host
myEC2