Linux命令 ssh - openssh套件中的客戶端連接工具

2022-03-18 17:57 更新

ssh

openssh套件中的客戶端連接工具

補充說明

ssh命令 是openssh套件中的客戶端連接工具,可以給予ssh加密協(xié)議實現(xiàn)安全的遠(yuǎn)程登錄服務(wù)器。

語法

ssh(選項)(參數(shù))

選項

-1:強制使用ssh協(xié)議版本1;
-2:強制使用ssh協(xié)議版本2;
-4:強制使用IPv4地址;
-6:強制使用IPv6地址;
-A:開啟認(rèn)證代理連接轉(zhuǎn)發(fā)功能;
-a:關(guān)閉認(rèn)證代理連接轉(zhuǎn)發(fā)功能;
-b:使用本機指定地址作為對應(yīng)連接的源ip地址;
-C:請求壓縮所有數(shù)據(jù);
-F:指定ssh指令的配置文件;
-f:后臺執(zhí)行ssh指令;
-g:允許遠(yuǎn)程主機連接主機的轉(zhuǎn)發(fā)端口;
-i:指定身份文件;
-l:指定連接遠(yuǎn)程服務(wù)器登錄用戶名;
-N:不執(zhí)行遠(yuǎn)程指令;
-o:指定配置選項;
-p:指定遠(yuǎn)程服務(wù)器上的端口;
-q:靜默模式;
-X:開啟X11轉(zhuǎn)發(fā)功能;
-x:關(guān)閉X11轉(zhuǎn)發(fā)功能;
-y:開啟信任X11轉(zhuǎn)發(fā)功能。

參數(shù)

  • 遠(yuǎn)程主機:指定要連接的遠(yuǎn)程ssh服務(wù)器;
  • 指令:要在遠(yuǎn)程ssh服務(wù)器上執(zhí)行的指令。

實例

# 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(安全終端)的端口號是 22 呢,這不是一個巧合,這其中有個我(Tatu Ylonen,SSH 協(xié)議的設(shè)計者)未曾訴說的故事。

將 SSH 協(xié)議端口號設(shè)為 22 的故事

1995 年春我編寫了 SSH 協(xié)議的最初版本,那時候 telnet 和 FTP 正被廣泛使用。

當(dāng)時我設(shè)計 SSH 協(xié)議想著是為了替代 telnet(端口 23)和 ftp(端口21)兩個協(xié)議的,而端口 22 是空閑的。我想當(dāng)然地就選擇了夾在 telnet 和 ftp 的端口中間的數(shù)字。我覺得端口號雖然是個小事但似乎又存在著某種信念。但我到底要怎么拿到那個端口號呢?我未曾擁有過任何一個端口號,但我卻認(rèn)識幾個擁有端口號的人!

在那時取得端口號的事情其實說來挺簡單的。畢竟當(dāng)時的因特網(wǎng)(Internet)并不是很大,是因特網(wǎng)爆炸的早期。端口號分配的活兒是 IANA(Internet Assigned Numbers Authority,互聯(lián)網(wǎng)數(shù)字分配機構(gòu))干的。在那時這機構(gòu)可相當(dāng)于是因特網(wǎng)先驅(qū) Jon Postel 和 Joyce K. Reynolds 一般的存在。Jon 參與編寫了多項主要的協(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 1995From: Tatu YlonenTo: Internet Assigned Numbers AuthoritySubject: 請求取得一個端口號Organization: 芬蘭赫爾辛基理工大學(xué)親愛的機構(gòu)成員:我寫了個可以在不安全的網(wǎng)絡(luò)環(huán)境中安全地從一臺機器登錄到另一臺機器的程序。它主要是對現(xiàn)有的 telnet 協(xié)議以及 rlogin 協(xié)議的功能性提升和安全性改進(jìn)。說的具體些,就是可以防御 IP、DNS > 或路由等欺騙行為。我打算將我的軟件免費地發(fā)布在因特網(wǎng)上,以得到廣泛地使用。我希望為該軟件注冊一個特權(quán)端口號,要是這個端口號在 1 到 255 > 之間就更好了,這樣它就可以用在名字服務(wù)器的 WKS 字段中了。我在附件中附上了協(xié)議標(biāo)準(zhǔn)的草案。這個軟件已經(jīng)在本地運行了幾個月了,我已準(zhǔn)備在獲得端口號后就發(fā)布。如果端口號分配一事安排的及時,我希望這周就將要發(fā)布的軟件準(zhǔn)備好。我目前在 beta 版測試時使用的端口號是 > 22,如果要是能夠分配到這個端口,我就不用做什么更改了(目前這個端口在列表中還是空閑的)。軟件中服務(wù)的名稱叫 ssh(系 Secure Shell 的縮寫)。您最真誠的,Tatu Ylonen

(LCTT 譯注:DNS 協(xié)議中的 WKS 記錄類型意即“眾所周知的業(yè)務(wù)描述”,是類似于 A、MX 這樣的 DNS 記錄類型,用于描述某個 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 -0700From: jkrey@ISI.EDUTo: ylo@cs.hut.fiSubject: 回復(fù):請求取得一個端口號Cc: iana@ISI.EDUTatu,我們將端口號 22 分配給 ssh 服務(wù)了,你目前是該服務(wù)的主要聯(lián)系人。Joyce

這就搞定了!SSH 的端口正式使用 22?。?!

1995 年 7 月 12 日上午 2 點 21 分,我給我在赫爾辛基理工大學(xué)的測試者們宣布了 SSH 的最后 beta 版本。當(dāng)日下午 5 點 23 分,我給測試者們宣布了 ssh-1.0.0 版本。1995 年 7 月 12 日,下午 5 點 51 分,我將一份 SSH(安全終端)的宣告發(fā)給了 cypherpunks@toad.com 的郵件列表,此外我還將其發(fā)給了一些新聞組、郵件列表和一些在因特網(wǎng)上討論相關(guān)話題的人們。

如何更改 SSH 服務(wù)的端口號

SSH 服務(wù)器是默認(rèn)運行在 22 號端口上的。然而,由于某些原因需要,它也可以運行在別的端口上。比如為了方便測試使用,又比如在同一個宿主機上運行多個不同的配置。當(dāng)然,極少情況下,不使用 root 權(quán)限運行它也可以,比如某些必須運行在非特權(quán)的端口的情況(端口號大于等于 1024)。

端口號可以在配置文件 /etc/ssh/sshd_config 中將 Port 22 更改。也可以使用 -p 選項運行 sshd。SSH 客戶端和 sftp 程序也可以使用 -p 選項。

配置 SSH 協(xié)議穿越防火墻

SSH 是少數(shù)通常被許可穿越防火墻的協(xié)議之一。通常的做法是不限制出站的 SSH 連接,尤其常見于一些較小的或者比較技術(shù)型的組織中,而入站的 SSH 連接通常會限制到一臺或者是少數(shù)幾臺服務(wù)器上。

出站的 SSH 連接

在防火墻中配置出站的 SSH 連接十分簡單。如果完全限制了外發(fā)連接,那么只需要創(chuàng)建一個允許 TCP 端口 22 可以外發(fā)的規(guī)則即可。如果你想限制目標(biāo)地址,你可以限制該規(guī)則僅允許訪問你的組織放在云端的外部服務(wù)器或保護(hù)該云端的跳板服務(wù)器即可。

反向通道是有風(fēng)險的

其實不限制出站的 SSH 連接雖然是可以的,但是是存在風(fēng)險的,SSH 協(xié)議是支持 通道訪問 的。最初的想法是在外部服務(wù)器搭建一個 SSH 服務(wù)監(jiān)聽來自各處的連接,將進(jìn)入的連接轉(zhuǎn)發(fā)到組織,并讓這個連接可以訪問某個內(nèi)部服務(wù)器。

在某些場景下這當(dāng)然非常的方便。開發(fā)者和系統(tǒng)管理員經(jīng)常使用它打開一個通道以便于他們可以遠(yuǎn)程訪問,比如在家里或者在旅行中使用筆記本電腦等場景。

然而通常來講這些做法是違背安全策略的,跳過了防火墻管理員和安全團(tuán)隊保護(hù)的控制無疑是違背安全策略的,比如這些: PCI、HIPAA、NIST SP 800-53 等。它可以被黑客和外國情報機構(gòu)用來在組織內(nèi)留下后門。

CryptoAuditor 是一款可以控制通道穿過防火墻或者一組云端服務(wù)器入口的產(chǎn)品。該款產(chǎn)品可以配合 通用 SSH 密鑰管理器(Universal SSH Key Manager) 來獲得對 主機密鑰(host keys)的訪問,以在啟用防火墻并阻擋未授權(quán)轉(zhuǎn)發(fā)的場景中解密 SSH 會話。

入站的 SSH 訪問

對于入站訪問而言,這里有幾點需要說一下:

配置防火墻,并轉(zhuǎn)發(fā)所有去往 22 端口的連接只能流向到一個特定的內(nèi)部網(wǎng)絡(luò) IP 地址或者一個 DMZ 主機。在該 IP 上運行 CryptoAuditor 或者跳板機來控制和審查所有訪問該組織的連接。 在防火墻上使用不同的端口訪問不同的服務(wù)器。 只允許使用 IPsec 協(xié)議這樣的 VPN(虛擬專用網(wǎng))登錄后連接 SSH 服務(wù)。

通過 iptables 服務(wù)限制 SSH 訪問

iptables 是一款內(nèi)建在 Linux 內(nèi)核的宿主防火墻。通常配置用于保護(hù)服務(wù)器以防止被訪問那些未明確開啟的端口。

如果服務(wù)器上啟用了 iptables,使用下面的命令將可以允許進(jìn)入的 SSH 訪問,當(dāng)然命令需要以 root 身份運行。

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號