SSH詳解


Secure Shell (SSH) 是一個允許兩台電腦之間通過安全的連接進行數據交換的網絡協議。加密保證了數據的保密性和完整性。SSH采用公鑰加密技術來驗證遠程主機,以及(必要時)允許遠程主機驗證用戶。

SSH 通常用於遠程訪問和執行命令,但是它也支持隧道,轉發任意 TCP 端口以及 X11 連接;它還能夠用 SFTP 或 SCP 協議來傳輸文件。

一個 SSH 服務器,默認地,在 TCP 端口 22 進行監聽。一個 SSH 客戶端程序通常被用來建立一個遠程連接到 sshd 守護進程。這兩者都被廣泛地存在於現代操作系統中,包括 Mac OS X,GNU/Linux,Solaris 和 OpenVMS 等。以專利的,自由軟件的以及開源版本的形式和不同的復雜性和完整性存在。

配置SSH

客戶端

SSH客戶端的配置文件是/etc/ssh/ssh_config 或 ~/.ssh/config.

現在已經不需要額外設置 Protocol 2, 默認的協議已經是 Protocol 2 了(http://www.openssh.org/txt/release-5.4)。

守護進程

SSH 守護進程的配置文件是/etc/ssh/sshd_config

實例:

只允許某些用戶訪問的話,加入這一行:

AllowUsers    user1 user2

只允許一些組訪問:

AllowGroups   group1 group2

要禁止通過SSH進行root用戶登錄,加入以下行:

PermitRootLogin no

管理 sshd 守護進程

你可以使用下面的命令啟動sshd:

systemctl start sshd

你可以使用下面的命令開機啟動sshd:

systemctl enable sshd.service
警告: Systemd 是一個異步啟動的進程。如果你綁定 SSH 守護進程到某個特定的 IP 地址  ListenAddress 192.168.1.100,它可能會在引導時啟動失敗,因為默認的 sshd.service 單元文件沒有對網絡接口啟動的依賴。當綁定到一個 IP 地址時,你需要添加  After=network.target 到自定義的 sshd.service 單元文件中。參見  Systemd#Replacing provided unit files [broken link: invalid section].

或者你可以啟用SSH Daemon socket,這樣當第一次傳入連接時啟動守護進程:

systemctl enable sshd.socket

如果你使用非默認端口22,你必須在文件(/lib/systemd/system/sshd.socket)中設置"ListenStream"為相應的端口。

/etc/ssh/ssh_config配置文件說明:

Host *
選項“Host”只對能夠匹配后面字串的計算機有效。“*”表示所有的計算機。

ForwardAgent no
“ForwardAgent”設置連接是否經過驗證代理(如果存在)轉發給遠程計算機。

ForwardX11 no
“ForwardX11”設置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。

RhostsAuthentication no
“RhostsAuthentication”設置是否使用基於rhosts的安全驗證。

RhostsRSAAuthentication no
“RhostsRSAAuthentication”設置是否使用用RSA算法的基於rhosts的安全驗證。

RSAAuthentication yes
“RSAAuthentication”設置是否使用RSA算法進行安全驗證。

PasswordAuthentication yes
“PasswordAuthentication”設置是否使用口令驗證。

FallBackToRsh no
“FallBackToRsh”設置如果用ssh連接出現錯誤是否自動使用rsh。

UseRsh no
“UseRsh”設置是否在這台計算機上使用“rlogin/rsh”。

BatchMode no
“BatchMode”如果設為“yes”,passphrase/password(交互式輸入口令)的提示將被禁止。當不能交互式輸入口令的時候,這個選項對腳本文件和批處理任務十分有用。

CheckHostIP yes
“CheckHostIP”設置ssh是否查看連接到服務器的主機的IP地址以防止DNS欺騙。建議設置為“yes”。

StrictHostKeyChecking no
“StrictHostKeyChecking”如果設置成“yes”,ssh就不會自動把計算機的密匙加入“$HOME/.ssh/known_hosts”文件,並且一旦計算機的密匙發生了變化,就拒絕連接。

IdentityFile ~/.ssh/identity
“IdentityFile”設置從哪個文件讀取用戶的RSA安全驗證標識。

Port 22
“Port”設置連接到遠程主機的端口。

Cipher blowfish
“Cipher”設置加密用的密碼。

EscapeChar ~
“EscapeChar”設置escape字符。

/etc/ssh/sshd_config配置文件說明

Port 22
“Port”設置sshd監聽的端口號。

ListenAddress 192.168.1.1
“ListenAddress”設置sshd服務器綁定的IP地址。

HostKey /etc/ssh/ssh_host_key

“HostKey”設置包含計算機私人密匙的文件。

ServerKeyBits 1024
“ServerKeyBits”定義服務器密匙的位數。

LoginGraceTime 600
“LoginGraceTime”設置如果用戶不能成功登錄,在切斷連接之前服務器需要等待的時間(以秒為單位)。

ClientAliveInterval 300(默認為0)
這個參數的是意思是每5分鍾,服務器向客戶端發一個消息,用於保持連接


KeyRegenerationInterval 3600
“KeyRegenerationInterval”設置在多少秒之后自動重新生成服務器的密匙(如果使用密匙)。重新生成密匙是為了防止用盜用的密匙解密被截獲的信息。

PermitRootLogin no
“PermitRootLogin”設置root能不能用ssh登錄。這個選項一定不要設成“yes”。

IgnoreRhosts yes
“IgnoreRhosts”設置驗證的時候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”設置ssh daemon是否在進行RhostsRSAAuthentication安全驗證的時候忽略用戶的“$HOME/.ssh/known_hosts”

StrictModes yes
“StrictModes”設置ssh在接收登錄請求之前是否檢查用戶家目錄和rhosts文件的權限和所有權。這通常是必要的,因為新手經常會把自己的目錄和文件設成任何人都有寫權限。

X11Forwarding no
“X11Forwarding”設置是否允許X11轉發。

PrintMotd yes
“PrintMotd”設置sshd是否在用戶登錄的時候顯示“/etc/motd”中的信息。

SyslogFacility AUTH
“SyslogFacility”設置在記錄來自sshd的消息的時候,是否給出“facility code”。

LogLevel INFO
“LogLevel”設置記錄sshd日志消息的層次。INFO是一個好的選擇。查看sshd的man幫助頁,已獲取更多的信息。

RhostsAuthentication no
“RhostsAuthentication”設置只用rhosts或“/etc/hosts.equiv”進行安全驗證是否已經足夠了。

RhostsRSAAuthentication no
“RhostsRSA”設置是否允許用rhosts或“/etc/hosts.equiv”加上RSA進行安全驗證。

RSAAuthentication yes
“RSAAuthentication”設置是否允許只有RSA安全驗證。

PasswordAuthentication yes
“PasswordAuthentication”設置是否允許口令驗證。

PermitEmptyPasswords no
“PermitEmptyPasswords”設置是否允許用口令為空的帳號登錄。

AllowUsers admin
        “AllowUsers”的后面可以跟着任意的數量的用戶名的匹配串(patterns)或user@host這樣的匹配串,這些字符串用空格隔開。主機名可以是DNS名或IP地址。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM