[轉]Linux系統中OpenSSH的安裝和配置__Linux

來源:互聯網
上載者:User
Linux系統中OpenSSH的安裝和配置

概述

許多網路程式,如telnet、rsh、rlogin或rexec,用明文(plain text)傳送口令和秘密的資訊,所以就可利用任何串連到網路上的電腦監聽這些程式和伺服器之間的通訊並擷取口令和秘密資訊。現在,telnet程式對於日常的管理工作是必不可少的,但是它又是不安全的,那麼用什麼來替代它呢。OpenSSH就是那些過時的、不安全的遠程登入程式,如:telnet、rlogin、rsh、rdist或rcp的替代品。

在OpenSSH的README檔案中提到:ssh(Secure Shell)程式可以通過網路登入到遠程主機並執行命令。它提供了很強的安全驗證可以在不安全的網路中進行安全的通訊。

我們把OpenSSH配置成支援TCP-Wrappers(inetd超級伺服器),這樣能夠進一步地提高安全性而且也沒有必要把OpenSSH作為守護進程(daemon)在後台運行。當用戶端的程式提出串連請求的時候,TCP-Wrappers守護進程就會在把串連重新導向到OpenSSH之前,對串連請求進行驗證和授權。OpenSSH是自由軟體而且使用不受專利保護的密碼編譯演算法。因此,我建議你使用OpenSSH(免費而且修正了一些bug),而不使用SSH1(免費但是有bug)和SSH2(現在使用商用的許可協議)。 注意事項

下面所有的命令都是Unix相容的命令。

源路徑都為“/var/tmp”(當然在實際情況中也可以用其它路徑)。

安裝在RedHat Linux 6.1和6.2下測試通過。

要用“root”使用者進行安裝。

OpenSSH的版本是1.2.3。 軟體包的來源

OpenSSH的首頁:http://violet.ibs.com.au/openssh/。

下載:openssh-1.2.3.tar.gz。 準備工作

編譯OpenSSH需要zlib-devel軟體包,這個軟體包包括標頭檔和函數庫。編譯使用zlib的壓縮和解壓函數的程式,就要事先安裝這個軟體包。可以用RedHat 6.1或6.2的光碟片安裝。

l        用下面的命令驗證一下在系統中是否已經安裝了zlib-devel軟體包:

[root@deep /]# rpm -qi zlib-devel

l        用下面命令在系統中安裝zlib-devel軟體包:

[root@deep /]# mount /dev/cdrom /mnt/cdrom/
[root@deep /]# cd /mnt/cdrom/RedHat/RPMS/
[root@deep RPMS]# rpm -Uvh zlib-devel-version.i386.rpm
gd ##################################################
[root@deep RPMS]# rpm -Uvh gd-devel-version.i386.rpm
zlib-devel ##################################################
[root@deep RPMS]# cd /; umount /mnt/cdrom/

在使用OpenSSH之前,還必須安裝OpenSSL。因為就算你不使用OpenSSL建立或儲存加密檔案,OpenSSH需要用OpenSSL的庫檔案才能正常運行。 安裝軟體包需要注意的問題

最好在編譯前和編譯後都做一張系統中所有檔案的列表,然後用“diff”命令去比較它們,找出其中的差別並知道到底把軟體安裝在哪裡。只要簡單地在編譯之前運行一下命令“find /* >OpenSSH1”,在編譯和安裝完軟體之後運行命令“find /* > OpenSSH2”,最後用命令“diff OpenSSH1 OpenSSH2 > OpenSSH-Installed”找出變化。 編譯和安裝

把軟體包(tar.gz)解壓:

[root@deep /]# cp openssh-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf openssh-version.tar.gz 編譯和最佳化

第一步

轉到OpenSSH的新目錄下,先設定編譯器的編譯參數:

CC="egcs" /
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-
pointer -fno-exceptions" /
./configure /
--prefix=/usr /
--sysconfdir=/etc/ssh /
--with-tcp-wrappers /
--with-ipv4-default /
--with-ssl-dir=/usr/include/openssl

這些設定告訴編譯器如何編譯OpenSSH:

l        連結上libwrap函數庫並且加上對TCP Wrappers的支援

l        禁止Linux/glibc-2.1.2中網域名稱解析的延時,縮短建立串連的時間

l        設定OpenSSL函數庫的路徑,這樣OpenSSH才能正常運行

第二步

現在,編譯和安裝OpenSSH:

[root@deep openssh-1.2.3]# make
[root@deep openssh-1.2.3]# make install
[root@deep openssh-1.2.3]# make host-key
[root@deep openssh-1.2.3]# install -m644 contrib/redhat/sshd.pam /etc/pam.d/sshd

“make”命令把源檔案編譯成可執行檔二進位檔案,“make install”把二進位檔案和設定檔安裝在合適的目錄下。“make host-key”產生主機密匙,“install”命令在RedHat Linux上安裝對OpenSSH的PAM支援。 清除不必要的檔案

用下面的命令刪除不必要的檔案:

[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf openssh-version/ openssh-version.tar.gz

“rm”命令刪除所有編譯和安裝OpenSSH所需要的來源程式,並且把OpenSSH軟體的壓縮包刪除掉。 配置

可以到這去下載“floppy.tgz”檔案:http://www.openna.com/books/floppy.tgz。把“floppy.tgz”檔案解開之後,可以在相應的目錄下發現我們在這本書中介紹的所有軟體的設定檔。這樣就沒有必要手工重建這些檔案,或者用拷貝粘貼的方法把它們粘貼到設定檔中去。不管是打算自己動手組建組態檔案還是拷貝現成的,你都要學會自己修改設定檔並且把設定檔拷貝到正確的目錄下。下面將具體說明。

為了運行OpenSSH,必須建立或者把下面的檔案拷貝到相應的目錄下:

l        把“sshd_config”檔案拷貝到“/etc/ssh”目錄下

l        把“ssh_config”檔案拷貝到“/etc/ssh”目錄下

l        把“ssh”檔案拷貝到“/etc/pam.d/”目錄下

可以把“floppy.tgz”解壓之後,找到上面列出來的檔案,並拷貝到合適的目錄下,或者用拷貝粘貼的方法從本書中直接粘貼出。 配置“/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地址。 配置OpenSSH使其使用TCP-Wrappers inetd超級伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.