openssh套件中的客戶端連接工具
ssh命令 是openssh套件中的客戶端連接工具,可以給予ssh加密協(xié)議實(shí)現(xiàn)安全的遠(yuǎn)程登錄服務(wù)器。
ssh(選項(xiàng))(參數(shù))
-1:強(qiáng)制使用ssh協(xié)議版本1;
-2:強(qiáng)制使用ssh協(xié)議版本2;
-4:強(qiáng)制使用IPv4地址;
-6:強(qiáng)制使用IPv6地址;
-A:開啟認(rèn)證代理連接轉(zhuǎn)發(fā)功能;
-a:關(guān)閉認(rèn)證代理連接轉(zhuǎn)發(fā)功能;
-b:使用本機(jī)指定地址作為對(duì)應(yīng)連接的源ip地址;
-C:請(qǐng)求壓縮所有數(shù)據(jù);
-F:指定ssh指令的配置文件;
-f:后臺(tái)執(zhí)行ssh指令;
-g:允許遠(yuǎn)程主機(jī)連接主機(jī)的轉(zhuǎn)發(fā)端口;
-i:指定身份文件;
-l:指定連接遠(yuǎn)程服務(wù)器登錄用戶名;
-N:不執(zhí)行遠(yuǎn)程指令;
-o:指定配置選項(xiàng);
-p:指定遠(yuǎn)程服務(wù)器上的端口;
-q:靜默模式;
-X:開啟X11轉(zhuǎn)發(fā)功能;
-x:關(guān)閉X11轉(zhuǎn)發(fā)功能;
-y:開啟信任X11轉(zhuǎn)發(fā)功能。
# ssh 用戶名@遠(yuǎn)程服務(wù)器地址
ssh user1@172.24.210.101
# 指定端口
ssh -p 2211 root@140.206.185.170
# ssh 大家族
ssh user@ip -p22 # 默認(rèn)用戶名為當(dāng)前用戶名,默認(rèn)端口為 22
ssh-keygen # 為當(dāng)前用戶生成 ssh 公鑰 + 私鑰
ssh-keygen -f keyfile -i -m key_format -e -m key_format # key_format: RFC4716/SSH2(default) PKCS8 PEM
ssh-copy-id user@ip:port # 將當(dāng)前用戶的公鑰復(fù)制到需要 ssh 的服務(wù)器的 ~/.ssh/authorized_keys,之后可以免密登錄
英文:Tatu Ylonen
編譯:Linux中國/kenxx
來源:https://linux.cn/article-8476-1.html
為什么 SSH(安全終端)的端口號(hào)是 22 呢,這不是一個(gè)巧合,這其中有個(gè)我(Tatu Ylonen,SSH 協(xié)議的設(shè)計(jì)者)未曾訴說的故事。
1995 年春我編寫了 SSH 協(xié)議的最初版本,那時(shí)候 telnet 和 FTP 正被廣泛使用。
當(dāng)時(shí)我設(shè)計(jì) SSH 協(xié)議想著是為了替代 telnet(端口 23)和 ftp(端口21)兩個(gè)協(xié)議的,而端口 22 是空閑的。我想當(dāng)然地就選擇了夾在 telnet 和 ftp 的端口中間的數(shù)字。我覺得端口號(hào)雖然是個(gè)小事但似乎又存在著某種信念。但我到底要怎么拿到那個(gè)端口號(hào)呢?我未曾擁有過任何一個(gè)端口號(hào),但我卻認(rèn)識(shí)幾個(gè)擁有端口號(hào)的人!
在那時(shí)取得端口號(hào)的事情其實(shí)說來挺簡單的。畢竟當(dāng)時(shí)的因特網(wǎng)(Internet)并不是很大,是因特網(wǎng)爆炸的早期。端口號(hào)分配的活兒是 IANA(Internet Assigned Numbers Authority,互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu))干的。在那時(shí)這機(jī)構(gòu)可相當(dāng)于是因特網(wǎng)先驅(qū) Jon Postel 和 Joyce K. Reynolds 一般的存在。Jon 參與編寫了多項(xiàng)主要的協(xié)議標(biāo)準(zhǔn),例如 IP(RFC 791)、ICMP(RFC 792)和 TCP(RFC 793)等一些你應(yīng)該早有耳聞的協(xié)議。
我可以說是敬畏 Jon 先生的,他參與編寫了幾乎所有主要的因特網(wǎng)標(biāo)準(zhǔn)文檔(Internet RFC)!
1995 年 7 月,就在我發(fā)布 ssh-1.0 前,我發(fā)送了一封郵件給 IANA:
From ylo Mon Jul 10 11:45:48 +0300 1995
From: Tatu Ylonen
To: Internet Assigned Numbers Authority
Subject: 請(qǐng)求取得一個(gè)端口號(hào)
Organization: 芬蘭赫爾辛基理工大學(xué)親愛的機(jī)構(gòu)成員:
我寫了個(gè)可以在不安全的網(wǎng)絡(luò)環(huán)境中安全地從一臺(tái)機(jī)器登錄到另一臺(tái)機(jī)器的程序。它主要是對(duì)現(xiàn)有的 telnet 協(xié)議以及 rlogin 協(xié)議的功能性提升和安全性改進(jìn)。說的具體些,就是可以防御 IP、DNS > 或路由等欺騙行為。我打算將我的軟件免費(fèi)地發(fā)布在因特網(wǎng)上,以得到廣泛地使用。
我希望為該軟件注冊(cè)一個(gè)特權(quán)端口號(hào),要是這個(gè)端口號(hào)在 1 到 255 > 之間就更好了,這樣它就可以用在名字服務(wù)器的 WKS 字段中了。
我在附件中附上了協(xié)議標(biāo)準(zhǔn)的草案。這個(gè)軟件已經(jīng)在本地運(yùn)行了幾個(gè)月了,我已準(zhǔn)備在獲得端口號(hào)后就發(fā)布。如果端口號(hào)分配一事安排的及時(shí),我希望這周就將要發(fā)布的軟件準(zhǔn)備好。我目前在 beta 版測試時(shí)使用的端口號(hào)是 > 22,如果要是能夠分配到這個(gè)端口,我就不用做什么更改了(目前這個(gè)端口在列表中還是空閑的)。
軟件中服務(wù)的名稱叫 ssh(系 Secure Shell 的縮寫)。
您最真誠的,
Tatu Ylonen
(LCTT 譯注:DNS 協(xié)議中的 WKS 記錄類型意即“眾所周知的業(yè)務(wù)描述”,是類似于 A、MX 這樣的 DNS 記錄類型,用于描述某個(gè) IP 所提供的服務(wù),目前鮮見使用。參見: https://docs.oracle.com/cd/E19683-01/806-4077/dnsintro-154/index.html 。)
第二天,我就收到了 Joyce 發(fā)來的郵件:
Date: Mon, 10 Jul 1995 15:35:33 -0700
From: jkrey@ISI.EDU
To: ylo@cs.hut.fi
Subject: 回復(fù):請(qǐng)求取得一個(gè)端口號(hào)
Cc: iana@ISI.EDU
Tatu,
我們將端口號(hào) 22 分配給 ssh 服務(wù)了,你目前是該服務(wù)的主要聯(lián)系人。
Joyce
這就搞定了!SSH 的端口正式使用 22!!!
1995 年 7 月 12 日上午 2 點(diǎn) 21 分,我給我在赫爾辛基理工大學(xué)的測試者們宣布了 SSH 的最后 beta 版本。當(dāng)日下午 5 點(diǎn) 23 分,我給測試者們宣布了 ssh-1.0.0 版本。1995 年 7 月 12 日,下午 5 點(diǎn) 51 分,我將一份 SSH(安全終端)的宣告發(fā)給了 cypherpunks@toad.com 的郵件列表,此外我還將其發(fā)給了一些新聞組、郵件列表和一些在因特網(wǎng)上討論相關(guān)話題的人們。
SSH 服務(wù)器是默認(rèn)運(yùn)行在 22 號(hào)端口上的。然而,由于某些原因需要,它也可以運(yùn)行在別的端口上。比如為了方便測試使用,又比如在同一個(gè)宿主機(jī)上運(yùn)行多個(gè)不同的配置。當(dāng)然,極少情況下,不使用 root 權(quán)限運(yùn)行它也可以,比如某些必須運(yùn)行在非特權(quán)的端口的情況(端口號(hào)大于等于 1024)。
端口號(hào)可以在配置文件 /etc/ssh/sshd_config 中將 Port 22 更改。也可以使用 -p 選項(xiàng)運(yùn)行 sshd。SSH 客戶端和 sftp 程序也可以使用 -p 選項(xiàng)。
SSH 是少數(shù)通常被許可穿越防火墻的協(xié)議之一。通常的做法是不限制出站的 SSH 連接,尤其常見于一些較小的或者比較技術(shù)型的組織中,而入站的 SSH 連接通常會(huì)限制到一臺(tái)或者是少數(shù)幾臺(tái)服務(wù)器上。
在防火墻中配置出站的 SSH 連接十分簡單。如果完全限制了外發(fā)連接,那么只需要?jiǎng)?chuàng)建一個(gè)允許 TCP 端口 22 可以外發(fā)的規(guī)則即可。如果你想限制目標(biāo)地址,你可以限制該規(guī)則僅允許訪問你的組織放在云端的外部服務(wù)器或保護(hù)該云端的跳板服務(wù)器即可。
其實(shí)不限制出站的 SSH 連接雖然是可以的,但是是存在風(fēng)險(xiǎn)的,SSH 協(xié)議是支持 通道訪問 的。最初的想法是在外部服務(wù)器搭建一個(gè) SSH 服務(wù)監(jiān)聽來自各處的連接,將進(jìn)入的連接轉(zhuǎn)發(fā)到組織,并讓這個(gè)連接可以訪問某個(gè)內(nèi)部服務(wù)器。
在某些場景下這當(dāng)然非常的方便。開發(fā)者和系統(tǒng)管理員經(jīng)常使用它打開一個(gè)通道以便于他們可以遠(yuǎn)程訪問,比如在家里或者在旅行中使用筆記本電腦等場景。
然而通常來講這些做法是違背安全策略的,跳過了防火墻管理員和安全團(tuán)隊(duì)保護(hù)的控制無疑是違背安全策略的,比如這些: PCI、HIPAA、NIST SP 800-53 等。它可以被黑客和外國情報(bào)機(jī)構(gòu)用來在組織內(nèi)留下后門。
CryptoAuditor 是一款可以控制通道穿過防火墻或者一組云端服務(wù)器入口的產(chǎn)品。該款產(chǎn)品可以配合 通用 SSH 密鑰管理器(Universal SSH Key Manager) 來獲得對(duì) 主機(jī)密鑰(host keys)的訪問,以在啟用防火墻并阻擋未授權(quán)轉(zhuǎn)發(fā)的場景中解密 SSH 會(huì)話。
對(duì)于入站訪問而言,這里有幾點(diǎn)需要說一下:
配置防火墻,并轉(zhuǎn)發(fā)所有去往 22 端口的連接只能流向到一個(gè)特定的內(nèi)部網(wǎng)絡(luò) IP 地址或者一個(gè) DMZ 主機(jī)。在該 IP 上運(yùn)行 CryptoAuditor 或者跳板機(jī)來控制和審查所有訪問該組織的連接。 在防火墻上使用不同的端口訪問不同的服務(wù)器。 只允許使用 IPsec 協(xié)議這樣的 VPN(虛擬專用網(wǎng))登錄后連接 SSH 服務(wù)。
iptables 是一款內(nèi)建在 Linux 內(nèi)核的宿主防火墻。通常配置用于保護(hù)服務(wù)器以防止被訪問那些未明確開啟的端口。
如果服務(wù)器上啟用了 iptables,使用下面的命令將可以允許進(jìn)入的 SSH 訪問,當(dāng)然命令需要以 root 身份運(yùn)行。
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
如果你想將上述命令創(chuàng)建的規(guī)則持久地保存,在某些系統(tǒng)版本中,可使用如下命令:
service iptables save