您好,登錄后才能下訂單哦!
這篇文章主要講解了“ubuntu配置ssh server的步驟”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ubuntu配置ssh server的步驟”吧!
SSH-Server配置指南
一、SSH簡介
SSH (Secure Shell)是一個應用程序中提供安全通信的協議,通過SSH協議可以安全地訪問服務器,因為SSH 具有成熟的公鑰加密體系,在數據進行傳輸時進行加密,保證數據在傳輸時不被惡意篡改、破壞和泄露,能有效防止網絡嗅探和IP欺騙等攻擊。
二、服務器端Ubuntu平臺下OpenSSH server的安裝
SSH是由芬蘭的一家公司開發的,但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的。
下以命令均是以管理員身份登錄使用
1. 在Ubuntu終端使用apt命令
代碼如下:
# apt-get install openssh-server
如果下載失敗,可能是由于系統需要更新的緣故,嘗試更新一下,就可以了。使用一下命令:
代碼如下:
# apt-get update
2. 配置openssh server,可以按照需求修改配置文件
代碼如下:
# vi etc/ssh/ssh_config
3. 重啟服務器
代碼如下:
# /etc/init.d/ssh restart
以上OpenSSH server就算安裝完成。
配置“/etc/ssh/ssh_config”文件
“/etc/ssh/ssh_config” 文件是OpenSSH系統范圍的配置文件,允許你通過設置不同的選項來改變客戶端程序的運行方式。這個文件的每一行
包含“關鍵詞-值”的匹配,其中“關鍵詞”是忽略大小寫的。下面列出來的是最重要的關鍵詞,用man命令查看幫助頁(ssh (1))可以得到
詳細的列表。
編輯“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改變下面的參數:
代碼如下:
# Site-wide defaults for various options
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
CheckHostIP yes
StrictHostKeyChecking no
IdentityFile ~/.ssh/identity
Port 22
Cipher blowfish
EscapeChar ~
下面逐行說明上面的選項設置:
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”文件
“/etc/ssh/sshd_config”是OpenSSH的配置文件,允許設置選項改變這個daemon的運行。這個文件的每一行包含“關鍵詞-值”的匹配,其中
“關鍵詞”是忽略大小寫的。下面列出來的是最重要的關鍵詞,用man命令查看幫助頁(sshd (8))可以得到詳細的列表。
編輯“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改變下面的參數:
代碼如下:
# This is ssh server systemwide configuration file.
Port 22
ListenAddress 192.168.1.1
HostKey /etc/ssh/ssh_host_key
ServerKeyBits 1024
LoginGraceTime 600
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding no
PrintMotd yes
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers admin
下面逐行說明上面的選項設置:
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”設置如果用戶不能成功登錄,在切斷連接之前服務器需要等待的時間(以秒為單位)。
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地址。
使用SFTP代替FTP傳輸文件
FTP(文件傳輸協議)是一種使用非常廣泛的在網絡中傳輸文件的方式,但是,它也同樣存在被網絡竊聽的危險,因為它也是以明文傳送用戶認證信息。其實在SSH軟件包中,已經包含了一個叫作SFTP(Secure FTP)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP并不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。若要開啟 SFTP功能可以修改sshd2_config文件的下列內容:
代碼如下:
# subsystem-sftp sftp-server
去掉行首的“#”,然后重新啟動SSH服務器,這樣在進行SSH連接時就可以同時使用SFTP傳輸文件。
關于客戶端設置
以上是對服務器的設置,其實在SSH服務器中已經包含了一些客戶端工具(如SSH,SFTP工具)。但是,更多的客戶端用戶使用Windows系統,下
面就對Windows上的客戶端系統設置加以說明。
首先從上文給出的網址下載“SSHSecureShellClient-3.2.3.exe”文件并安裝。安裝完成后,在桌面上會產成兩個快捷方式,一個是“SSH
Secure Shell Client”,用于遠程管理,另一個是“SSH Secure File Transfer Client”,用于和服務器進行文件傳輸。在工具欄中點擊
“quick connnect”,輸入正確的主機名和用戶名,然后在彈出的對話框中輸入密碼完成登錄,即可開始執行命令或者傳輸文件。在使用SFTP
時,默認只能顯示用戶的宿主目錄的內容和非隱藏文件。但是,有時候您可能還要查看其它目錄或者隱藏文件,這時只需要在菜單“eidt-
>setting-> file transfer”的選項中選中“show root directory”和“show hidden file”兩個選項即可。
使普通用戶僅使用SFTP而沒有使用Shell的權限
默認情況下管理員給系統添加的賬號將同時具有SFTP和SSH的權限。讓普通用戶使用shell執行命令也是有很大的安全隱患的,如果能夠禁止用
戶使用shell執行命令而僅使用SFTP傳輸文件,就能消除這種安全隱患,完全實現FTP的功能,
正如上文所述,SFTP沒有單獨的守護進程,只能借助于sshd守護進程,所以我們仍然需要使用SSH服務器,要保證sshd守護進程處于運行狀態。
具體實現方法如下:
首先,在編譯安裝時,編譯中一定要有“–enable-static” 選項。安裝成功后,在安裝目錄下的bin目錄中執行下面的命令:
代碼如下:
[root@localhost bin]# ls -l ssh-dummy-shell* sftp-server2*
將看到下列輸出內容:
代碼如下:
-rwxr-xr-x 1 root root 1350417 Apr 28 16:30 sftp-server2
-rwxr-xr-x 1 root root 3566890 Apr 28 16:30 sftp-server2.static
-rwxr-xr-x 1 root root 72388 Apr 28 16:30 ssh-dummy-shell
-rwxr-xr-x 1 root root 1813412 Apr 28 16:30 ssh-dummy-shell.static
其中帶“static”后綴名,且比較大的兩個文件就是加上“–enable-static”選項后生成的,后面我們將用到這里兩個文件。
下面以添加普通賬號test為例講述具體操作步驟。
1.在“/home”目錄(或者將要存放普通用戶宿主目錄的目錄)下創建“bin”子目錄,并將兩個static文件復制到此目錄下(復制后改名去掉static后綴),執行如下命令:
代碼如下:
[root@localhost bin]# cd /usr/local/ssh4.2/bin
[root@localhost bin]#cp ssh-dummy-shell.static /home/bin/ssh-dummy-shell
[root@localhost bin]# cp sftp-server2.static /home/bin/sftp-server
[root@localhost bin]#chown -R root.root /home/bin
[root@localhost bin]#chmod -R 755 /home/bin
2.添加一個組,使以后所有禁止使用shell的用戶都屬于這個組,這樣便于管理更多的用戶:
[root@localhost bin]#groupadd template
3.在添加系統賬號時使用如下命令:
代碼如下:
[root@localhost root]#useradd -s /bin/ssh-dummy-shell -g template test
[root@localhost root]#passwd test
[root@localhost root]#mkdir /home/test/bin
[root@localhost root]#cd /home/test/bin
[root@localhost bin]#ln /home/bin/ssh-dummy-shell ssh-dummy-shell
[root@localhost bin]#ln /home/bin/sftp-server sftp-server
[root@localhost bin]#chown -R root.root /home/test/bin
[root@localhost bin]#chmod -R 755 /home/test/bin
3.用戶添加成功后,還需要修改/etc/ssh3/sshd2_config文件,將下列內容:
#ChRootGroups sftp,guest
改為:
ChRootGroups sftp,guest,template
修改上面這行內容,主要是為了禁止普通用戶查看系統的其它目錄,把其權限限制在自己的主目錄下。重新啟動SSH服務器程序,在客戶端使用SSH Secure File Transfer Client登錄,即使選擇顯示根目錄,普通用戶也看不到其它的任何目錄,而是把自己的主目錄當作根目錄。注意,這里使用的是按用戶所屬組限制,這樣可以使包含在template組內的所有用戶都可以實現此功能。若您只要限制個別用戶的話,可以修改下面的內容:
代碼如下:
#ChRootUsers anonymous,ftp,guest
事實證明SSH是一種非常好的網絡安全解決方案,但是,目前仍有很多管理員使用Telnet或FTP這種非常不安全的工具,希望盡快轉移到SSH上來,以減少網絡安全隱患。
感謝各位的閱讀,以上就是“ubuntu配置ssh server的步驟”的內容了,經過本文的學習后,相信大家對ubuntu配置ssh server的步驟這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。