SSH筆記
ssh Agent
eval $(ssh-agent)
添加 key
ssh-add .ssh/id_key
檢視 agent 目前已添加的 key
ssh-add -L
ssh_config
關於這項的配置可以參見 man ssh_config,在~/.ssh/config設定以下內容
host example
Port 22
Hostname example.com
IdentityFile ~/.ssh/id_example
輸入指令ssh user@example將會同等於ssh user@example.com
且讀取私鑰檔案。
ProxyCommand
透過A主機連上B主機
host hostA
Port 22
Hostname example.com
host hostB
Port 22
Hostname 192.168.1.1
ProxyCommand ssh -qW %h:%p hostA
IdentityFile ~/.ssh/id_1
%h主機名%p端口號-q安靜模式-W hostname:port轉發IdentityFile放在config的電腦上gateway為ProxyCommand的hostA
直接透過指令轉發
ssh -o ProxyCommand="ssh -qW hostA" hostB
連上hostB
ssh hostB
其他常用指令
scp
scp source target
sshfs
sshfs user@host:dir mountpoint
Socks5 代理
如果要透過 ssh server 端進行代理
ssh -D 1337 -q -C -N domain
如果要使 ssh clinet 端作為代理
如果要將 sshd server 的流量透過 client 打出去就採用這個
ssh -R 1337 domain
備註: openssh.com/txt/release-7.6 增加了 socks4/5 的功能,這項功能與 Port Forwarding 共用同一個參數
之後我們可以複製 proxychains 的檔案配置到 localhost:1337
socks5 127.0.0.1 1337
之後啟用 proxychins
proxychains -f ./proxychains.conf zsh
檢查 ip 是否正確
proxychains curl ifconfig.me/ip
Local Forwarding
如果 example.com 只有開放 ssh port,我們希望連到 example.com 內部的 8000 port,我們希望在 ssh client 端使用 5000 port 連上這個服務,可以透過以下指令綁定 local forwarding。
ssh -L 5000:localhost:8000 example.com
Reverse Forwarding,如果要從 server 外網連線,可能要配置 sshd_config 的 GatewayPorts 成 clientspecified
ssh -R <server_port>:localhost:<ssh_clinet_port> user@example.com
我們還可以在本地轉發到 lan host 或其他 host,流量會從 ssh client 送出
ssh -R <server_port>:<lan_host>:<lan_port> user@example.com
問題
Remote Host Identification Has Changed
移除known_hosts裡面的主機,這裡假設主機為127.0.0.1
ssh-keygen -R "127.0.0.1"
Linux Network SSH Socks5