出於安全等因素的考慮,我們一般不會把所有伺服器都設定成可 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
redis 啟用命令
一 redis後端啟動 1 將redis原始碼包中的redis.conf配置檔案複製到redis bin 下 cd root redis 3.0.0 cp redis.conf usr local redis bin 2 修改redis.conf,將daemonize由 no改為yes 3 執行啟動...
啟用生成樹命令(spanning tree)
1 啟用生成樹 spanning tree vlan vlan list vlan號 2 配置交換機為根網橋 spanning tree vlan vlan list root primary 指定根網橋 secondary 備用根網橋 3 修改交換機的優先順序 spanning tree vlan...
檢視win啟用狀態的命令
檢視win啟用狀態的命令 1 鍵盤按下win r 執行輸入如下命令即可。2 win r 輸入 slmgr.vbs dlv 顯示 最為詳盡的啟用資訊,包括 啟用id 安裝id 啟用截止日期 3 win r 輸入 slmgr.vbs dli 顯示 作業系統版本 部分產品金鑰 許可證狀態 4 win r ...