国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SSH工作原理&Ubuntu20.04安裝并配置SSH&設(shè)置SSH免密登錄

這篇具有很好參考價值的文章主要介紹了SSH工作原理&Ubuntu20.04安裝并配置SSH&設(shè)置SSH免密登錄。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、SSH的介紹(服務(wù)器端,客戶端)

1、SSH(遠程連接工具)連接原理:

2、SSH的安全機制

3、兩種級別的驗證方法(登錄方法)

二、ssh的安裝與啟動

1、安裝

2、啟動服務(wù)器的SSH服務(wù)

三、SSH客戶端

1、前置知識

2、口令登錄

1)、登錄命令

2)、驗證過程

3)、登錄失敗:1、服務(wù)器變更 + 2、服務(wù)器IP變化

4)、配置文件(一般不需要配置服務(wù)器端)

5)可選的配置選項

四、服務(wù)器端(Ubuntu)

1.前置知識

2.配置文件

3.密鑰

4.可選命令

5.可用配置項

參考文獻:


一、SSH的介紹(服務(wù)器端,客戶端)

1、SSH(遠程連接工具)連接原理:

????????ssh服務(wù)是一個守護進程(demon),系統(tǒng)后臺監(jiān)聽客戶端的連接,ssh服務(wù)端的進程名為sshd,負責(zé)實時監(jiān)聽客戶端的請求(IP 22端口),包括公共秘鑰等交換等信息。

????????ssh服務(wù)由2部分組成:?openssh(提供ssh服務(wù))??? openssl(提供加密的程序);如果你只是想登陸別的機器的SSH只需要安裝openssh-client(ubuntu有默認安裝,如果沒有則sudoapt-get install openssh-client),如果要使本機開放SSH服務(wù)就需要安裝openssh-server。

Ubuntu/win10(powershell)缺省已經(jīng)安裝了ssh client。

????????ssh的客戶端可以用?XSHELL,Securecrt, Mobaxterm等工具進行連接

2、SSH的安全機制

SSH之所以能夠保證安全,原因在于它采用了公鑰加密。

整個過程是這樣的:(1)遠程主機收到用戶的登錄請求,把自己的公鑰發(fā)給用戶。(2)用戶使用這個公鑰,將登錄密碼加密后,發(fā)送回來。(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。

這個過程本身是安全的,但是實施的時候存在一個風(fēng)險:如果有人截獲了登錄請求,然后冒充遠程主機,將偽造的公鑰發(fā)給用戶,那么用戶很難辨別真?zhèn)?。因為不像https協(xié)議,SSH協(xié)議的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發(fā)的。

可以設(shè)想,如果攻擊者插在用戶與遠程主機之間(比如在公共的wifi區(qū)域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那么SSH的安全機制就蕩然無存了。這種風(fēng)險就是著名的"中間人攻擊"(Man-in-the-middle attack)。

SSH協(xié)議是如何應(yīng)對的呢?

3、兩種級別的驗證方法(登錄方法)

????????但并不是說SSH就是絕對安全的,因為它本身提供兩種級別的驗證方法:

????????第一種級別(基于口令的安全驗證):只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸?shù)臄?shù)據(jù)都會被加密,但是不能保證你正在連接的服務(wù)器就是你想連接的服務(wù)器??赡軙袆e的服務(wù)器在冒充真正的服務(wù)器,也就是受到“中間人攻擊”這種方式的攻擊。

????????第二種級別(基于密鑰的安全驗證):你必須為自己創(chuàng)建一對密鑰,并把公鑰放在需要訪問的服務(wù)器上。如果你要連接到SSH服務(wù)器上,客戶端軟件就會向服務(wù)器發(fā)出請求,請求用你的密鑰進行安全驗證。服務(wù)器收到請求之后,先在該服務(wù)器上你的主目錄下尋找你的公鑰,然后把它和你發(fā)送過來的公鑰進行比較。如果兩個密鑰一致,服務(wù)器就用公鑰加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件??蛻舳塑浖盏健百|(zhì)詢”之后就可以用你的私鑰在本地解密再把它發(fā)送給服務(wù)器完成登錄。與第一種級別相比,第二種級別不僅加密所有傳輸?shù)臄?shù)據(jù),也不需要在網(wǎng)絡(luò)上傳送口令,因此安全性更高,可以有效防止中間人攻擊。

二、ssh的安裝與啟動

1、安裝

????????SSH分為客戶端 openssh-client 和服務(wù)器 openssh-server,可以利用以下命令確認電腦上是否安裝了客戶端和服務(wù)器。

dpkg -l | grep ssh

????????如果只是想遠程登陸別的機器只需要安裝客戶端(Ubuntu默認安裝了客戶端),如果要開放本機的SSH服務(wù)就需要安裝服務(wù)器。

sudo apt update        #更新數(shù)據(jù)
sudo apt upgrade        #更新軟件
sudo apt install openssh-server  #下載安裝ssh服務(wù)的服務(wù)器
sudo apt install openssh-client  #下載安裝ssh服務(wù)的客戶端

# 上面命令下載失敗可以使用下面的命令嘗試下載
sudo apt-get install openssh-client 
sudo apt-get install openssh-server 

這里給出的是ubuntu安裝命令,其它系統(tǒng)請參考具體的安裝命令

windows一般自帶ssh客戶端,如果沒有可以參照以下官方文檔教程進行安裝
sshd re-exec requires execution with an absolute path,# 開發(fā)環(huán)境與開發(fā)工具,ssh,服務(wù)器,linux

2、啟動服務(wù)器的SSH服務(wù)

首先確認ssh-server是否已經(jīng)啟動了

ps -e | grep ssh


如圖,sshd 表示ssh-server已經(jīng)啟動了。如果沒有啟動,可以使用如下命令啟動:

sudo /etc/init.d/ssh start 


停止和重啟ssh服務(wù)的命令如下:

sudo /etc/init.d/ssh stop  #server停止ssh服務(wù) 
sudo /etc/init.d/ssh restart  #server重啟ssh服務(wù)


接下來就可以進行使用客戶機遠程登錄服務(wù)器了~
?

三、SSH客戶端

1、前置知識

位置:

ubuntu 系統(tǒng)的位置是/usr/bin/ssh。
Windows系統(tǒng)的位置是C:\Program Files\OpenSSH-Win64\ssh.exe

用法:

客戶端ssh 最常見的用途就是登錄服務(wù)器,這要求服務(wù)器安裝并正在運行 SSH 服務(wù)器軟件。

2、口令登錄

1)、登錄命令

口令登錄非常簡單,只需要一條命令,命令格式為: ssh 客戶端用戶名@服務(wù)器ip地址 ?eg:

ssh lee@IP(服務(wù)器的username和IP)

如果需要調(diào)用圖形界面程序可以使用 -X 選項

ssh -X lee@192.168.52.144

如果客戶機的用戶名和服務(wù)器的用戶名相同,登錄時可以省略用戶名。

ssh 192.168.52.1

還要說明的是,SSH服務(wù)的默認端口是22,也就是說,如果你不設(shè)置端口的話登錄請求會自動送到遠程主機的22端口。我們可以使用 -p 選項來修改端口號,比如連接到服務(wù)器的1234端口:

ssh -p 1234 lee@192.168.52.1

客戶機必須要知道服務(wù)器的ip地址。可以在服務(wù)器端電腦上利用 ifconfig 命令查看該機的ip地址:

2)、驗證過程

ssh 連接遠程服務(wù)器后,首先有一個驗證過程,驗證遠程服務(wù)器是否為陌生地址。如果是第一次登錄遠程主機,系統(tǒng)會給出下面提示:

上面這段文字告訴用戶,這臺服務(wù)器的指紋是陌生的,讓用戶選擇是否要繼續(xù)連接(輸入 yes 或 no)。所謂“服務(wù)器指紋”,指的是 SSH 服務(wù)器公鑰的哈希值。每臺 SSH 服務(wù)器都有唯一一對密鑰,用于跟客戶端通信,其中公鑰的哈希值就可以用來識別服務(wù)器。

下面的命令可以查看某個公鑰的指紋。

ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub

上面的例子中,ssh-keygen -l -f命令會輸出公鑰/etc/ssh/ssh_host_ecdsa_key.pub的指紋。

????????ssh 會將本機連接過的所有服務(wù)器公鑰的指紋,都儲存在本機的~/.ssh/known_hosts文件中。每次連接服務(wù)器時,通過該文件判斷是否為陌生主機(陌生公鑰)。

? ? ? ? 上面輸入yes即可。這時系統(tǒng)會提示遠程主機被添加到已知主機列表,即本機的~/.ssh/known_hosts文件中。

然后會要求我們輸入遠程主機的密碼,輸入的密碼正確就可以成功登錄了。命令提示符會修改為遠程主機的提示符,現(xiàn)在開始,終端中輸入的命令都將在服務(wù)器中執(zhí)行。

我們可以通過 Ctrl+D 或者 exit 命令退出遠程登錄。
?

3)、登錄失?。?、服務(wù)器變更 + 2、服務(wù)器IP變化

????????服務(wù)器指紋可以防止有人惡意冒充遠程主機。如果服務(wù)器的密鑰發(fā)生變更(比如重裝了 SSH 服務(wù)器),客戶端再次連接時,就會發(fā)生公鑰指紋不吻合的情況。這時,客戶端就會中斷連接,并顯示一段警告信息。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
77:a5:69:81:9b:eb:40:76:7b:13:04:a9:6c:f4:9c:5d.
Please contact your system administrator.
Add correct host key in /home/me/.ssh/known_hosts to get rid of this message.
Offending key in /home/me/.ssh/known_hosts:36

????????上面這段文字的意思是,該主機的公鑰指紋跟~/.ssh/known_hosts文件儲存的不一樣,必須處理以后才能連接。這時,你需要確認是什么原因,使得公鑰指紋發(fā)生變更,到底是惡意劫持,還是管理員變更了 SSH 服務(wù)器公鑰。

????????如果新的公鑰確認可以信任,需要繼續(xù)執(zhí)行連接,你可以執(zhí)行下面的命令,將原來的公鑰指紋從~/.ssh/known_hosts文件刪除。

ssh-keygen -R hostname

上面命令中,hostname是發(fā)生公鑰變更的主機名。

除了使用上面的命令,你也可以手工修改known_hosts文件,將公鑰指紋刪除。

刪除了原來的公鑰指紋以后,重新執(zhí)行 ssh 命令連接遠程服務(wù)器,將新的指紋加入known_hosts文件,就可以順利連接了。

4)、配置文件(一般不需要配置服務(wù)器端)
?

文件位置:

????????SSH 客戶端的全局配置文件是/etc/ssh/ssh_config,用戶個人的配置文件在~/.ssh/config,優(yōu)先級高于全局配置文件。

????????除了配置文件,~/.ssh目錄還有一些用戶個人的密鑰文件和其他文件。下面是其中一些常見的文件。

~/.ssh/id_ecdsa:用戶的 ECDSA 私鑰。
~/.ssh/id_ecdsa.pub:用戶的 ECDSA 公鑰。

~/.ssh/id_rsa:用于 SSH 協(xié)議版本2 的 RSA 私鑰。
~/.ssh/id_rsa.pub:用于SSH 協(xié)議版本2 的 RSA 公鑰
。
~/.ssh/identity:用于 SSH 協(xié)議版本1 的 RSA 私鑰。
~/.ssh/identity.pub:用于 SSH 協(xié)議版本1 的 RSA 公鑰。
~/.ssh/known_hosts:包含 SSH 服務(wù)器的公鑰指紋。

sshd re-exec requires execution with an absolute path,# 開發(fā)環(huán)境與開發(fā)工具,ssh,服務(wù)器,linux
配置主機:(一般不配置)

用戶個人的配置文件~/.ssh/config,可以按照不同服務(wù)器,列出各自的連接參數(shù),從而不必每一次登錄都輸入重復(fù)的參數(shù)。下面是一個例子。

Host *
     Port 2222

Host remoteserver
     HostName remote.example.com
     User neo
     Port 2112

上面代碼中,Host *表示對所有主機生效,后面的Port 2222表示所有主機的默認連接端口都是2222,這樣就不用在登錄時特別指定端口了。這里的縮進并不是必需的,只是為了視覺上,易于識別針對不同主機的設(shè)置。

后面的Host remoteserver表示,下面的設(shè)置只對主機remoteserver生效。remoteserver只是一個別名,具體的主機由HostName命令指定,User和Port這兩項分別表示用戶名和端口。這里的Port會覆蓋上面Host *部分的Port設(shè)置。

以后,登錄remote.example.com時,只要執(zhí)行ssh remoteserver命令,就會自動套用 config 文件里面指定的參數(shù)。 單個主機的配置格式如下。
?

ssh remoteserver

等同于

ssh -p 2112 neo@remote.example.com

Host命令的值可以使用通配符,比如Host *表示對所有主機都有效的設(shè)置,Host *.edu表示只對一級域名為.edu的主機有效的設(shè)置。它們的設(shè)置都可以被單個主機的設(shè)置覆蓋。

5)可選的配置選項

AddressFamily inet:表示只使用 IPv4 協(xié)議。如果設(shè)為inet6,表示只使用 IPv6 協(xié)議。

BindAddress 192.168.10.235:指定本機的 IP 地址(如果本機有多個 IP 地址)。

CheckHostIP yes:檢查 SSH 服務(wù)器的 IP 地址是否跟公鑰數(shù)據(jù)庫吻合。

Ciphers blowfish,3des:指定加密算法。

Compression yes:是否壓縮傳輸信號。

ConnectionAttempts 10:客戶端進行連接時,最大的嘗試次數(shù)。

ConnectTimeout 60:客戶端進行連接時,服務(wù)器在指定秒數(shù)內(nèi)沒有回復(fù),則中斷連接嘗試。

DynamicForward 1080:指定動態(tài)轉(zhuǎn)發(fā)端口。

GlobalKnownHostsFile /users/smith/.ssh/my_global_hosts_file:指定全局的公鑰數(shù)據(jù)庫文件的位置。

Host server.example.com:指定連接的域名或 IP 地址,也可以是別名,支持通配符。Host命令后面的所有配置,都是針對該主機的,直到下一個Host命令為止。

HostKeyAlgorithms ssh-dss,ssh-rsa:指定密鑰算法,優(yōu)先級從高到低排

HostName myserver.example.com:在Host命令使用別名的情況下,HostName指定域名或 IP 地址。

IdentityFile keyfile:指定私鑰文件。

LocalForward 2001 localhost:143:指定本地端口轉(zhuǎn)發(fā)。

LogLevel QUIET:指定日志詳細程度。如果設(shè)為QUIET,將不輸出大部分的警告和提示。

MACs hmac-sha1,hmac-md5:指定數(shù)據(jù)校驗算法。

NumberOfPasswordPrompts 2:密碼登錄時,用戶輸錯密碼的最大嘗試次數(shù)。

PasswordAuthentication no:指定是否支持密碼登錄。不過,這里只是客戶端禁止,真正的禁止需要在 SSH 服務(wù)器設(shè)置。

Port 2035:指定客戶端連接的 SSH 服務(wù)器端口。

PreferredAuthentications publickey,hostbased,password:指定各種登錄方法的優(yōu)先級。

Protocol 2:支持的 SSH 協(xié)議版本,多個版本之間使用逗號分隔。

PubKeyAuthentication yes:是否支持密鑰登錄。這里只是客戶端設(shè)置,還需要在SSH 服務(wù)器進行相應(yīng)設(shè)置。

RemoteForward 2001 server:143:指定遠程端口轉(zhuǎn)發(fā)。

SendEnv COLOR:SSH 客戶端向服務(wù)器發(fā)送的環(huán)境變量名,多個環(huán)境變量之間使用空格分隔。環(huán)境變量的值從客戶端當(dāng)前環(huán)境中拷貝。

ServerAliveCountMax 3:如果沒有收到服務(wù)器的回應(yīng),客戶端連續(xù)發(fā)送多少次keepalive信號,才斷開連接。該項默認值為3。

ServerAliveInterval 300:客戶端建立連接后,如果在給定秒數(shù)內(nèi),沒有收到服務(wù)器發(fā)來的消息,客戶端向服務(wù)器發(fā)送keepalive消息。如果不希望客戶端發(fā)送,這一項設(shè)為0。

StrictHostKeyChecking yes:yes表示嚴(yán)格檢查,服務(wù)器公鑰為未知或發(fā)生變化,則拒絕連接。no表示如果服務(wù)器公鑰未知,則加入客戶端公鑰數(shù)據(jù)庫,如果公鑰發(fā)生變化,不改變客戶端公鑰數(shù)據(jù)庫,輸出一條警告,依然允許連接繼續(xù)進行。ask(默認值)表示詢問用戶是否繼續(xù)進行。

TCPKeepAlive yes:客戶端是否定期向服務(wù)器發(fā)送keepalive信息。

User userName:指定遠程登錄的賬戶名。

UserKnownHostsFile /users/smith/.ssh/my_local_hosts_file:指定當(dāng)前用戶的known_hosts文件(服務(wù)器公鑰指紋列表)的位置。

VerifyHostKeyDNS yes:是否通過檢查 SSH 服務(wù)器的 DNS 記錄,確認公鑰指紋是否與known_hosts文件保存的一致。
?


?

四、服務(wù)器端(Ubuntu)

1.前置知識

簡介:

SSH 的架構(gòu)是服務(wù)器/客戶端模式,兩端運行的軟件是不一樣的。OpenSSH 的客戶端軟件是 ssh,服務(wù)器軟件是 sshd。

sshd

上面的命令運行后,如果提示“sshd re-exec requires execution with an absolute path”,就需要使用絕對路徑來啟動。這是為了防止有人出于各種目的,放置同名軟件在$PATH變量指向的目錄中,代替真正的 sshd。

可以使用以下命令查找位置

whereis sshd

# sshd: /usr/sbin/sshd #返回的結(jié)果

然后進行使用:

 /usr/sbin/sshd
啟動:
sudo service ssh start

重啟:
sudo service ssh restart

停止:
sudo service ssh stop

下面的命令讓 sshd 在計算機下次啟動時自動運行。
sudo systemctl enable sshd.service

2.配置文件

sshd 的配置文件在/etc/ssh目錄,主配置文件是sshd_config,此外還有一些安裝時生成的密鑰。

/etc/ssh/sshd_config:配置文件
/etc/ssh/ssh_host_ecdsa_key:ECDSA 私鑰。
/etc/ssh/ssh_host_ecdsa_key.pub:ECDSA 公鑰。
/etc/ssh/ssh_host_key:用于 SSH 1 協(xié)議版本的 RSA 私鑰。
/etc/ssh/ssh_host_key.pub:用于 SSH 1 協(xié)議版本的 RSA 公鑰。
/etc/ssh/ssh_host_rsa_key:用于 SSH 2 協(xié)議版本的 RSA 私鑰。
/etc/ssh/ssh_host_rsa_key.pub:用于 SSH 2 協(xié)議版本的 RSA 公鑰。

/etc/pam.d/sshd:PAM 配置文件。

sshd re-exec requires execution with an absolute path,# 開發(fā)環(huán)境與開發(fā)工具,ssh,服務(wù)器,linux

????????注意,如果重裝 sshd,上面這些密鑰都會重新生成,導(dǎo)致客戶端重新 ssh 連接服務(wù)器時,會跳出警告,拒絕連接。為了避免這種情況,可以在重裝 sshd 時,先備份/etc/ssh目錄,重裝后再恢復(fù)這個目錄。

????????配置文件sshd_config的格式是,每個命令占據(jù)一行。每行都是配置項和對應(yīng)的值,配置項的大小寫不敏感,與值之間使用空格分隔。

Port 2034
Port = 2034

上面的配置命令指定,配置項Port的值是2034。Port寫成port也可。

配置文件還有另一種格式,就是配置項與值之間有一個等號,等號前后的空格可選。

配置文件里面,#開頭的行表示注釋。注意,注釋只能放在一行的開頭,不能放在一行的結(jié)尾。

Port 2034 # 此處不允許注釋

上面的寫法是錯誤的。另外,空行等同于注釋。

????????sshd 啟動時會自動讀取默認的配置文件。如果希望使用其他的配置文件,可以用 sshd 命令的-f參數(shù)指定。

sshd -f /usr/local/ssh/my_config

上面的命令指定 sshd 使用另一個配置文件my_config。

修改配置文件以后,可以用 sshd 命令的-t(test)檢查有沒有語法錯誤。

 sshd -t

配置文件修改以后,并不會自動生效,必須重新啟動 sshd。

sudo service ssh restart 

3.密鑰

sshd 有自己的一對或多對密鑰。它使用密鑰向客戶端證明自己的身份。所有密鑰都是公鑰和私鑰成對出現(xiàn),公鑰的文件名一般是私鑰文件名加上后綴.pub。

DSA 格式的密鑰文件默認為/etc/ssh/ssh_host_dsa_key(公鑰為ssh_host_dsa_key.pub),RSA 格式的密鑰為/etc/ssh/ssh_host_rsa_key(公鑰為ssh_host_rsa_key.pub)。如果需要支持 SSH 1 協(xié)議,則必須有密鑰/etc/ssh/ssh_host_key。

如果密鑰不是默認文件,那么可以通過配置文件sshd_config的HostKey配置項指定。默認密鑰的HostKey設(shè)置如下。
?

# HostKey for protocol version 1
# HostKey /etc/ssh/ssh_host_key

# HostKeys for protocol version 2
# HostKey /etc/ssh/ssh_host_rsa_key
# HostKey /etc/ssh/ssh_host_dsa_ke

上面命令前面的#表示這些行都是注釋,因為這是默認值,有沒有這幾行都一樣。

如果要修改密鑰,就要去掉行首的#,指定其他密鑰。

HostKey /usr/local/ssh/my_dsa_key
HostKey /usr/local/ssh/my_rsa_key
HostKey /usr/local/ssh/my_old_ssh1_key

4.可選命令

sshd 命令有一些配置項。這些配置項在調(diào)用時指定,可以覆蓋配置文件的設(shè)置。

注意,如果出現(xiàn)

sshd re-exec requires execution with an absolute path

就要用絕對路徑代替

/usr/sbin/sshd -d

如果出現(xiàn)

sshd: no hostkeys available -- exiting.

可能是權(quán)限不夠,添加sudo

sudo /usr/sbin/sshd -d

如果依舊不行,可執(zhí)行一下以下命令:

sudo ssh-keygen -A

-d參數(shù)用于顯示 debug 信息。

sshd -d

-D參數(shù)指定 sshd 不作為后臺守護進程運行。

sshd -D

-e參數(shù)將 sshd 寫入系統(tǒng)日志 syslog 的內(nèi)容導(dǎo)向標(biāo)準(zhǔn)錯誤(standard error)。

-f參數(shù)指定配置文件的位置。

-h參數(shù)用于指定密鑰。

sshd -h /usr/local/ssh/my_rsa_key

-o參數(shù)指定配置文件的一個配置項和對應(yīng)的值。

sshd -o "Port 2034"

配置項和對應(yīng)值之間,可以使用等號。

 sshd -o "Port = 2034"

如果省略等號前后的空格,也可以不使用引號。

 sshd -o Port=2034

-o參數(shù)可以多個一起使用,用來指定多個配置關(guān)鍵字。

-p參數(shù)指定 sshd 的服務(wù)端口。

sshd -p 2034

上面命令指定 sshd 在2034端口啟動。

-p參數(shù)可以指定多個端口。

$ sshd -p 2222 -p 3333

-t參數(shù)檢查配置文件的語法是否正確。

5.可用配置項

以下是/etc/ssh/sshd_config文件里面的配置項。

AcceptEnv

AcceptEnv指定允許接受客戶端通過SendEnv命令發(fā)來的哪些環(huán)境變量,即允許客戶端設(shè)置服務(wù)器的環(huán)境變量清單,變量名之間使用空格分隔(AcceptEnv PATH TERM)。

AllowGroups

AllowGroups指定允許登錄的用戶組(AllowGroups groupName,多個組之間用空格分隔。如果不使用該項,則允許所有用戶組登錄。

AllowUsers

AllowUsers指定允許登錄的用戶,用戶名之間使用空格分隔(AllowUsers user1 user2),也可以使用多行AllowUsers命令指定,用戶名支持使用通配符。如果不使用該項,則允許所有用戶登錄。該項也可以使用用戶名@域名的格式(比如AllowUsers jones@example.com)。

AllowTcpForwarding

AllowTcpForwarding指定是否允許端口轉(zhuǎn)發(fā),默認值為yes(AllowTcpForwarding yes),local表示只允許本地端口轉(zhuǎn)發(fā),remote表示只允許遠程端口轉(zhuǎn)發(fā)。

AuthorizedKeysFile

AuthorizedKeysFile指定儲存用戶公鑰的目錄,默認是用戶主目錄的ssh/authorized_keys目錄(AuthorizedKeysFile .ssh/authorized_keys)。

Banner

Banner指定用戶登錄后,sshd 向其展示的信息文件(Banner /usr/local/etc/warning.txt),默認不展示任何內(nèi)容。

ChallengeResponseAuthentication

ChallengeResponseAuthentication指定是否使用“鍵盤交互”身份驗證方案,默認值為yes(ChallengeResponseAuthentication yes)。

從理論上講,“鍵盤交互”身份驗證方案可以向用戶詢問多重問題,但是實踐中,通常僅詢問用戶密碼。如果要完全禁用基于密碼的身份驗證,請將PasswordAuthentication和ChallengeResponseAuthentication都設(shè)置為no。

Ciphers

Ciphers指定 sshd 可以接受的加密算法(Ciphers 3des-cbc),多個算法之間使用逗號分隔。

ClientAliveCountMax

ClientAliveCountMax指定建立連接后,客戶端失去響應(yīng)時,服務(wù)器嘗試連接的次數(shù)(ClientAliveCountMax 8)。

ClientAliveInterval

ClientAliveInterval指定允許客戶端發(fā)呆的時間,單位為秒(ClientAliveInterval 180)。如果這段時間里面,客戶端沒有發(fā)送任何信號,SSH 連接將關(guān)閉。

Compression

Compression指定客戶端與服務(wù)器之間的數(shù)據(jù)傳輸是否壓縮。默認值為yes(Compression yes)

DenyGroups

DenyGroups指定不允許登錄的用戶組(DenyGroups groupName)。

DenyUsers

DenyUsers指定不允許登錄的用戶(DenyUsers user1),用戶名之間使用空格分隔,也可以使用多行DenyUsers命令指定。

FascistLogging

SSH 1 版本專用,指定日志輸出全部 Debug 信息(FascistLogging yes)。

HostKey

HostKey指定 sshd 服務(wù)器的密鑰,詳見前文。

KeyRegenerationInterval

KeyRegenerationInterval指定 SSH 1 版本的密鑰重新生成時間間隔,單位為秒,默認是3600秒(KeyRegenerationInterval 3600)。

ListenAddress

ListenAddress指定 sshd 監(jiān)聽的本機 IP 地址,即 sshd 啟用的 IP 地址,默認是 0.0.0.0(ListenAddress 0.0.0.0)表示在本機所有網(wǎng)絡(luò)接口啟用。可以改成只在某個網(wǎng)絡(luò)接口啟用(比如ListenAddress 192.168.10.23),也可以指定某個域名啟用(比如ListenAddress server.example.com)。

如果要監(jiān)聽多個指定的 IP 地址,可以使用多行ListenAddress命令。

ListenAddress 172.16.1.1
ListenAddress 192.168.0.1

LoginGraceTime

LoginGraceTime指定允許客戶端登錄時發(fā)呆的最長時間,比如用戶遲遲不輸入密碼,連接就會自動斷開,單位為秒(LoginGraceTime 60)。如果設(shè)為0,就表示沒有限制。

LogLevel

LogLevel指定日志的詳細程度,可能的值依次為QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2、DEBUG3,默認為INFO(LogLevel INFO)。

MACs

MACs指定sshd 可以接受的數(shù)據(jù)校驗算法(MACs hmac-sha1),多個算法之間使用逗號分隔。

MaxAuthTries

MaxAuthTries指定允許 SSH 登錄的最大嘗試次數(shù)(MaxAuthTries 3),如果密碼輸入錯誤達到指定次數(shù),SSH 連接將關(guān)閉。

MaxStartups

MaxStartups指定允許同時并發(fā)的 SSH 連接數(shù)量(MaxStartups)。如果設(shè)為0,就表示沒有限制。

這個屬性也可以設(shè)為A:B:C的形式,比如MaxStartups 10:50:20,表示如果達到10個并發(fā)連接,后面的連接將有50%的概率被拒絕;如果達到20個并發(fā)連接,則后面的連接將100%被拒絕。

PasswordAuthentication

PasswordAuthentication指定是否允許密碼登錄,默認值為yes(PasswordAuthentication yes),建議改成no(禁止密碼登錄,只允許密鑰登錄)。

PermitEmptyPasswords

PermitEmptyPasswords指定是否允許空密碼登錄,即用戶的密碼是否可以為空,默認為yes(PermitEmptyPasswords yes),建議改成no(禁止無密碼登錄)。

PermitRootLogin

PermitRootLogin指定是否允許根用戶登錄,默認為yes(PermitRootLogin yes),建議改成no(禁止根用戶登錄)。

還有一種寫法是寫成prohibit-password,表示 root 用戶不能用密碼登錄,但是可以用密鑰登錄。

PermitRootLogin prohibit-password

PermitUserEnvironment

PermitUserEnvironment指定是否允許 sshd 加載客戶端的/.ssh/environment文件和/.ssh/authorized_keys文件里面的environment= options環(huán)境變量設(shè)置。默認值為no(PermitUserEnvironment no)。

Port

Port指定 sshd 監(jiān)聽的端口,即客戶端連接的端口,默認是22(Port 22)。出于安全考慮,可以改掉這個端口(比如Port 8822)。

配置文件可以使用多個Port命令,同時監(jiān)聽多個端口。

Port 22
Port 80
Port 443
Port 8080

上面的示例表示同時監(jiān)聽4個端口。

PrintMotd

PrintMotd指定用戶登錄后,是否向其展示系統(tǒng)的 motd(Message of the day)的信息文件/etc/motd。該文件用于通知所有用戶一些重要事項,比如系統(tǒng)維護時間、安全問題等等。默認值為yes(PrintMotd yes),由于 Shell 一般會展示這個信息文件,所以這里可以改為no。

PrintLastLog

PrintLastLog指定是否打印上一次用戶登錄時間,默認值為yes(PrintLastLog yes)。

Protocol

Protocol指定 sshd 使用的協(xié)議。Protocol 1表示使用 SSH 1 協(xié)議,建議改成Protocol 2(使用 SSH 2 協(xié)議)。Protocol 2,1表示同時支持兩個版本的協(xié)議。

PubKeyAuthentication

PubKeyAuthentication指定是否允許公鑰登錄,默認值為yes(PubKeyAuthentication yes)。

QuietMode

SSH 1 版本專用,指定日志只輸出致命的錯誤信息(QuietMode yes)。

RSAAuthentication

RSAAuthentication指定允許 RSA 認證,默認值為yes(RSAAuthentication yes)。

ServerKeyBits

ServerKeyBits指定 SSH 1 版本的密鑰重新生成時的位數(shù),默認是768(ServerKeyBits 768)。

StrictModes

StrictModes指定 sshd 是否檢查用戶的一些重要文件和目錄的權(quán)限。默認為yes(StrictModes yes),即對于用戶的 SSH 配置文件、密鑰文件和所在目錄,SSH 要求擁有者必須是根用戶或用戶本人,用戶組和其他人的寫權(quán)限必須關(guān)閉。

SyslogFacility

SyslogFacility指定 Syslog 如何處理 sshd 的日志,默認是 Auth(SyslogFacility AUTH)。

TCPKeepAlive

TCPKeepAlive指定打開 sshd 跟客戶端 TCP 連接的 keepalive 參數(shù)(TCPKeepAlive yes)。

UseDNS

UseDNS指定用戶 SSH 登錄一個域名時,服務(wù)器是否使用 DNS,確認該域名對應(yīng)的 IP 地址包含本機(UseDNS yes)。打開該選項意義不大,而且如果 DNS 更新不及時,還有可能誤判,建議關(guān)閉。

UseLogin

UseLogin指定用戶認證內(nèi)部是否使用/usr/bin/login替代 SSH 工具,默認為no(UseLogin no)。

UserPrivilegeSeparation

UserPrivilegeSeparation指定用戶認證通過以后,使用另一個子線程處理用戶權(quán)限相關(guān)的操作,這樣有利于提高安全性。默認值為yes(UsePrivilegeSeparation yes)。

VerboseMode

SSH 2 版本專用,指定日志輸出詳細的 Debug 信息(VerboseMode yes)。

X11Forwarding

X11Forwarding指定是否打開 X window 的轉(zhuǎn)發(fā),默認值為 no(X11Forwarding no)。

修改配置文件以后,可以使用下面的命令驗證,配置文件是否有語法錯誤。

sshd -t

新的配置文件生效,必須重啟 sshd。

sudo service ssh restart

參考文獻:

(29條消息) SSH簡介及兩種遠程登錄的方法_Jack LDZ的博客-CSDN博客_ssh@

(22條消息) ssh用法及命令_-柚子皮-的博客-CSDN博客_ssh命令

SSH原理與運用(一):遠程登錄 - 阮一峰的網(wǎng)絡(luò)日志 (ruanyifeng.com)

SSH原理與運用(二):遠程操作與端口轉(zhuǎn)發(fā) - 阮一峰的網(wǎng)絡(luò)日志 (ruanyifeng.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-778780.html

到了這里,關(guān)于SSH工作原理&Ubuntu20.04安裝并配置SSH&設(shè)置SSH免密登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 安裝配置 JupyterLab ubuntu20.04

    安裝配置 JupyterLab ubuntu20.04

    目錄 ?編輯 (1)安裝? (2)配置 (1)生成配置文件 ?(2)生成jupyterlab的登錄密碼 (3)修改 jupyter 的配置文件 (4)安裝 jupyterlab 插件? (3)啟動 ?安裝時保持software updater設(shè)置如下 安裝jupyterlab時有warning 參考后解決:(1條消息) WARNING: The scripts ... are installed in /home/.../.

    2023年04月21日
    瀏覽(57)
  • Ubuntu20.04安裝配置Nginx

    由于在學(xué)習(xí)配置時,網(wǎng)上的教程比較雜亂,用時很久才做好一些基礎(chǔ)配置,把流程記錄一下方便和我一樣的小白學(xué)習(xí) 本文寫于2023.2.10,如果間隔太久,下述內(nèi)容可能會失效,請另尋教程 僅包含基礎(chǔ)教程,個人服務(wù)未涉及到負載均衡 安裝nginx 配置靜態(tài)服務(wù)器 配置端口轉(zhuǎn)發(fā) 配

    2024年02月03日
    瀏覽(54)
  • Ubuntu系統(tǒng)安裝、配置與美化(Ubuntu20.04)

    Ubuntu系統(tǒng)安裝、配置與美化(Ubuntu20.04)

    本文的寫作目的在于幫助完全零基礎(chǔ)的小白不理解原理而可以 無腦安裝Linux系統(tǒng) ,同時也是為自己進行的一個整理,相較于網(wǎng)上大多數(shù)的教程,本教程將一些內(nèi)容進行了整合與整理,加之本人在安裝Ubuntu系統(tǒng)的時候聽從學(xué)長的教導(dǎo)了解的內(nèi)容,對于部分的網(wǎng)絡(luò)常見的教程進行

    2023年04月17日
    瀏覽(23)
  • Ubuntu20.04中Docker安裝與配置

    Ubuntu20.04中Docker安裝與配置

    1、卸載可能存在的舊版本 2、更新apt包索引 顯示“正在讀取軟件包列表… 完成” 3、安裝以下包以使apt可以通過HTTPS使用存儲庫(repository) 顯示“done.” 4、添加Docker官方的GPG密鑰 顯示“OK” 5、設(shè)置stable存儲庫 如果沒有報錯就正常進行下一步。顯示“正在讀取軟件包列表… 完

    2024年02月05日
    瀏覽(52)
  • Ubuntu 20.04下使用rbenv安裝和設(shè)置高版本Ruby的步驟詳解

    學(xué)習(xí)如何在Ubuntu 20.04桌面環(huán)境下使用rbenv安裝和設(shè)置更高版本的Ruby。通過克隆rbenv并設(shè)置環(huán)境變量,安裝指定版本的Ruby,配置源以及安裝bundler管理gem依賴項。最后檢查安裝后的軟件版本和gem安裝路徑。詳細步驟如下。

    2024年02月11日
    瀏覽(53)
  • Ubuntu 20.04下安裝配置Qt開發(fā)環(huán)境的步驟

    下面是在Ubuntu 20.04下安裝配置Qt開發(fā)環(huán)境的步驟: 安裝Qt Creator 在終端中輸入以下命令以安裝Qt Creator: 在終端中輸入以下命令以安裝Qt 5開發(fā)庫: 安裝g++和gcc編譯工具 配置Qt Creator 打開Qt Creator,進入“Tools”菜單,選擇“Options”,在彈出的對話框中選擇“Build Run”,然后選擇

    2024年02月15日
    瀏覽(38)
  • ubuntu 20.04 4090 顯卡驅(qū)動安裝 深度學(xué)習(xí)環(huán)境配置

    ubuntu 20.04 4090 顯卡驅(qū)動安裝 深度學(xué)習(xí)環(huán)境配置

    準(zhǔn)備工作: 換源 安裝輸入法:重啟的步驟先不管(自選) sudo apt update sudo apt upgrade 禁用nouveau驅(qū)動(這個驅(qū)動是ubuntu開源小組逆向破解NVIDIA的開源驅(qū)動,與英偉達的原有驅(qū)動不兼容)執(zhí)行完第2.3步,先不重啟。 打開 軟件和更新 , 選擇 附加驅(qū)動,安裝推薦驅(qū)動(第一個),點

    2024年02月16日
    瀏覽(33)
  • 【ubuntu環(huán)境配置】超詳細ubuntu20.04/22.04安裝nvidia驅(qū)動/CUDA/cudnn

    【ubuntu環(huán)境配置】超詳細ubuntu20.04/22.04安裝nvidia驅(qū)動/CUDA/cudnn

    nvidia顯卡驅(qū)動安裝方式有三種:使用ubuntu附加驅(qū)動的方式;使用命令行方式安裝;使用.run文件的方式進行安裝, 點擊菜單中的Additional Drivers選擇適合的驅(qū)動版本進行安裝,該方法最方便快捷(但有時會翻車) 更新所有的軟件包 安裝顯卡驅(qū)動 詳見我的另一篇博客Ubunut20.04/2

    2024年01月22日
    瀏覽(34)
  • Ubuntu 20.04 上安裝和配置 neo4j

    1.?進入要安裝neo4j的ubuntu環(huán)境。 2.?添加Debian資源庫。 java 1.8.xx版本對應(yīng)neo4j 3.xx版本(jdk 11版本對應(yīng)neo4j 4.xx版本): (1)wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add - (2)echo \\\'deb https://debian.neo4j.com stable 3.5\\\' | sudo tee /etc/apt/sources.list.d/neo4j.list(或者:echo \\\'deb

    2024年02月07日
    瀏覽(24)
  • Windows 10 安裝配置WSL2(ubuntu20.04)教程 超詳細

    Windows 10 安裝配置WSL2(ubuntu20.04)教程 超詳細

    超詳細windows安裝配置WSL2(ubuntu20.04)步驟 Windows上快速安裝WSL2教程 windows wsl2安裝 Windows Subsystem for Linux(簡稱WSL),Windows下的Linux子系統(tǒng),是一個在Windows 10上能夠運行原生Linux二進制可執(zhí)行文件(ELF格式)的兼容層。它是由微軟與Canonical公司合作開發(fā),其目標(biāo)是使純正的Ubu

    2024年02月12日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包