ssh如何經過跳板機直接訪問到後端服務器(Mac&Linux&Windows解決方案)

前言

若是公司的服務器在外網,通常會設置一個跳板機,訪問公司其餘服務器都須要從跳板機作一個ssh跳轉,外網的服務器基本都要經過證書登陸的。因而咱們面臨一個狀況,本機ssh->跳板機->目標機器。若是直接在跳板機上放置公私鑰對,並將跳板機上的公鑰放到目標機器上,這樣能夠直接登陸。但這樣會有一個問題,跳板機上的root權限的用戶能夠獲取普通用戶的公私鑰對,就算對私鑰設置了密碼,可是從安全角度來看,這樣仍是失去了保障,失去了服務器的一部分安全性。html

如何來解決這個問題呢,其實ssh協議自己是支持祕鑰轉發的,不須要在跳板機上放置公私鑰。linux

Linux(Mac)下有以下兩種方式:

方式一:

從linux客戶端的ssh跳轉時,執行命令nginx

ssh username@跳板機ipwindows

而後在跳板機上跳轉到目標機器安全

ssh username@目標機器ip服務器

跳板機ip和目標機器ip,username帳戶下已經在相應的 .ssh/authorized_keys 加入了公鑰,配置是沒有問題了,可是咱們會遇到一個Pubkey Unauthorization的錯誤,因跳板機沒有username的私鑰。問題老是會有,解決方法也老是有,ssh是有轉發密鑰的功能,從本機跳轉到跳板機時能夠把私鑰轉發過去。ssh

正確作法是,在本機linux客戶端執行命令 ssh -A username@跳板機ipcode

-A表示轉發密鑰,因此跳轉到跳板機,密鑰也轉發了過來htm

接下來咱們再在跳板機執行命令 ssh username@目標機器ipblog

另外能夠配置本機客戶端的默認配置文件,修改成默認轉發密鑰:

修改ssh_config(不是sshd_config,通常在/etc或者/etc/ssh下):

#ForwardAgent no 改成 ForwardAgent Yes

方式二:

ssh username@目標機器ip -p 22 -o ProxyCommand='ssh -p 22 username@跳板機ip -W %h:%p'

也能夠修改配置文件 ~/.ssh/config , 若沒有則建立:

Host tiaoban   #任意名字,隨便使用

    HostName 192.168.1.1   #這個是跳板機的IP,支持域名

    Port 22      #跳板機端口

    User username_tiaoban       #跳板機用戶

 

Host nginx      #一樣,任意名字,隨便起

    HostName 192.168.1.2  #真正登錄的服務器,不支持域名必須IP地址

    Port 22   #服務器的端口

    User username   #服務器的用戶

    ProxyCommand ssh username_tiaoban@tiaoban -W %h:%p



Host 10.10.0.*      #能夠用*通配符

    Port 22   #服務器的端口

    User username   #服務器的用戶

    ProxyCommand ssh username_tiaoban@tiaoban -W %h:%p

配置好後, 直接 ssh nginx 就能夠登陸 192.168.1.2 這臺跳板機後面的服務器。 也能夠用 ssh username@10.10.0.xx 來登陸10.10.0.27, 10.10.10.33, .... 等機器。

windows SecureCRT密鑰轉發

windows下SecureCRT配置轉發,須要作如下設置

輸入圖片說明

資料:

[1] http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646427.html

[2] http://douyue.blog.51cto.com/10174393/1738586

相關文章
相關標籤/搜索