SSH JUMP
前輩的介紹之下做了一下ssh jump 的測試,其實這工具真的非常好用且方便。
測試環境:
proxyNode // DMZ 外,限定來源IP
targetNode // DMZ 內,受保護服務
之前我要從 client ssh 到 targetNode 需要
ssh 到 proxyNode ; 再從 proxyNode ssh 到 targetNode
且可能會把 ssh private key 放到 proxyNode! // 危險!
用了 proxy jump 之後,基本用法就是
ssh -J proxyNode targetNode
且不需要把 private key 放到 proxyNode // 安全!
jump 也可以一直跳下去
ssh -J jumpuser1@jump1,jumpuser2@jump2,...,jumpuserN@jumpN user@host
透過ssh jump 可以直接連到 DMZ 但是有時候需要檔案I/O,例如 scp, rsync, sshfs
# sshfs
sshfs -o ssh_command="ssh -J B_host" C_host:/<path> <mountpoint>
# or rsync
rsync -azv -e 'ssh -A -J USER@PROXYHOST:PORT' foo/ dest:./foo/
# or scp
scp -J username@B username@C:/some/path /some/path
最後建議用 .ssh/config , 設定如下:
Host targetNode
HostName targetNode.example.org
IdentityFile ~/.ssh/targetNode.pem
User user1
ProxyJump proxyNode
Host proxyNode
HostName proxyNode.example.org
IdentityFile ~/.ssh/id_rsa
Port 22
User user2
因為都用 key 登入,所以直接下 ssh targetNode 會自動 jump 。
另外 sshfs, scp, rsync 在有設定 config 的情況下使用,可以少很多參數。
例如
sshfs targetNode:/etc /etc
以上,我開始重新設定所有的 ssh 都儘量改用 jump!
reference:
https://serverfault.com/questions/941934/sshfs-over-a-jumphost
https://blog.wu-boy.com/2016/10/ssh-agent-forwarding-proxycommand-tutorial/
https://www.tecmint.com/access-linux-server-using-a-jump-host/
https://nyogjtrc.github.io/posts/2020/03/ssh-proxyjump/
https://mperdikeas.github.io/networking.html.files/scp-a-file-through-jump-host.html