出於安全等因素的考慮,我們一般不會把所有伺服器都設定成可 ssh 直連,而是會通過一台機器作為跳板機,跳板機就相當於大門,你想要連線其他伺服器的時候,必須要先穿過大門。先通過 ssh 登入到跳板機,再從跳板機登入到目標伺服器。
假設在某個機房中,我們用機器 a 來代表目標伺服器,該伺服器不能 ssh 直連,只能通過跳板機連線,用機器 b 來代表跳板機,我們是可以 ssh 直連跳板機的。
我們先把自己電腦上的 ssh 的 public key 拷貝到跳板機以及目標伺服器的.ssh/authorized_keys
檔案裡,這樣我們理論上可以無密碼登入了。
我們嘗試:
ssh -u username@b
然後再從跳板機登入到目標伺服器
ssh -o "passwordauthentication no" username@a
引數-o "passwordauthentication no"
表示不使用密碼登入
但是結果是
permission denied(publickey,password)
這是因為 ssh 的 key 登入是要 public key 和 private key 成對存在的,雖然 public key 已經拷貝到了目標機器,但是當我們已經登入到跳板機上即機器 b 上時會向機器 a 也進行 ssh 登入,而跳板機上並沒有我們自己機器的 private key。
可以如果我們把自己電腦的 private key 複製到跳板機上的話,那其他登入到跳板機上的人就可以拿到我的 private key 了,這是不安全的。
這個時候我們需要通過 ssh 的agent forwarding
來解決。
eval $(ssh-agent)
ssh-add
ssh -a username@b
-a 引數表示開啟 agent forwarding
ssh username@a
這樣就可以從跳板機登入目標機器了,原因就是我們開啟了 agent forwarding。
當我們在跳板機上 ssh 登入目標機器時,目標機器會要求跳板機用對應的 ssh 的 private key 做認證,但是跳板機沒有我們自己電腦的 private key,但是又因為我們從自己的電腦 ssh 登入到跳板機的時候啟用了 agent forwarding,所以跳板機會把認證請求**給我們自己的電腦。我們自己的電腦在收到這個請求的時候,就會在 shh-agent 程序進行認證,又因為我們已經通過ssh-add
命令將我們的 private key 加到了ssh-agen
t 中,所以認證會成功。最後我們機器把認證結果傳回給跳板機,跳板機再把結果轉回給目標機器,這樣就完成了在跳板機沒有我們的 ssh 的 private key 的情況下,還是能夠成功登入目標機器。
回到我們自己的機器上,執行命令
ssh -j username@b username@a
一條命令就可以直接登入到目標機器。
引數 -j 是用來指定跳板機的,ssh 會幫我們先登入到跳板機,然後再登入目標機器。
人類身份驗證 - segmentfaultsegmentfault.com
linux 檔案 跳板機 linux跳板機配置
1.ip配置 跳板機ip 192.168.10.128 server1ip 192.168.10.133 server2ip 192.168.10.132 server3ip 192.168.10.131 2.建立使用者 root fengxiaoli useradd jump要在所有機器上操作。r...
ssh 配置跳板機
ssh 本地機器 a,ip 192.168.32.160 跳板機 b,ip 192.168.32.163 實際伺服器 c,ip 192.168.32.164 一 a b c 分別建立 spider 使用者 各自生成金鑰對,拷貝 a 機器公鑰到 b,b 公鑰到 c,並修改 authorized key...
搭建跳板機
首先,貼一段跳板機的介紹。跳板機屬於內控堡壘機範疇,是一種用於單點登陸的主機應用系統。跳板機就是一台伺服器,維護人員在維護過程中,首先要統一登入到這台伺服器上,然後從這台伺服器再登入到目標裝置進行維護。但跳板機並沒有實現對運維人員操作行為的控制和審計,此外,跳板機存在嚴重的安全風險,一旦跳板機系統被...