0%

ssh over proxy

透過 proxy 連線 ssh

ssh 是很方便的工具,我們有時希望可以讓 ssh 透過 proxy 連到 proxy server 可以連到的機器。
這篇就是要介紹這樣的情境,不過,需要設定的手續也相對多。

squid proxy 端設定

這篇文章以 squid proxy 來介紹 proxy server 在這樣的情境中伴演的角色及相應的設定。
我們的環境都是以 linux 上的設定來說明相關的安裝及設定。

安裝 squid

1
# apk add --update --no-cache squid

這裡是以在 alpine linux 來說明 package 的安裝,在 ubuntu 及 centos 也有類及的
package 管理工具,不會有太大的差異。主要是要安裝 squid

設定 squid

預設的 proxy server 為了安全有設下安全的連線方式,而讓 ssh 透過 proxy 連線
不在預設的安全連線的 port 列表中,因些需要把 ssh port 22 加入安全名單。

編輯 /etc/squid/squid.conf

1
2
3
...
acl Safe_ports port 22 # ssh
acl SSL_ports port 22 # ssh

加入上面的內容到 acl 最前面

執行 squid

1
# /usr/sbin/squid -f /etc/squid/squid.conf -NYCd 1 &

ssh client 端

要透過 proxy 連線 ssh , 還需要輔助工具 corkscrew 讓連線透過 proxy 連線

安裝 corkscrew

1
# apk add --no-cache --update -X http://dl-cdn.alpinelinux.org/alpine/edge/testing corkscrew

其他平台也可以在網路上找到相對應的 package 來安裝。

透過 proxy 連線 ssh

要把設定放在 ssh config 檔案中。

編輯 ~/.ssh/config

1
2
3
4
host myhost
hostname 172.18.0.2
user alpine
proxycommand corkscrew 192.168.0.13 3128

連線 ssh

1
$ ssh myhost

連線會好像從 proxy server 連線到 ssh server 一樣,可以當作是反追蹤的一種方式。