前言:linux運維管理的時候,一般都是通過遠程方式管理,當需要從一個工作站管理數以百計的服務器主機時,遠程維護的方式將更佔優勢。
一:SSH遠程管理
SSH是一種安全通道協議,主要用來實現字符界面的遠程管理、遠程複製等功能。SSH協議對通信雙方的數據傳輸進行了加密處理,其中包括用戶登陸時輸入的用戶口令。
與早起的TELNET(遠程登錄)、RSH(Remote Shell,遠程執行)、RCP(Remote File Copy,遠程文件複製)等應用相比,SSH協議提供了更好的安全性。
OpenSSH軟件官網:http://www.openssh.com
1、服務監聽選項
[root@localhost ~]# vim /etc/ssh/sshd_config ......//省略部分內容 Port 22 //監聽端口爲22 #AddressFamily any ListenAddress 192.168.1.1 //監聽地址爲192.168.1.1 ......//省略部分內容 Protocol 2 //使用SSH V2協議 ......//省略部分內容 UseDNS no //禁用DNS反向解析 ......//省略部分內容 sshd服務器使用的默認端口是22,必要時建議修改次端口號,並指定監聽服務的具體IP地址,以提高在網絡中的隱蔽性。除此之外,SSH協議的版本選用V2比V1的安全 性更要好,禁用DNS反向解析可以提高服務器的響應速度。 [root@localhost ~]# service sshd restart //重新加載服務才能生效 停止 sshd: [確定] 正在啓動 sshd: [確定]
2、用戶登陸控制
通常應禁止root用戶或密碼爲空的用戶登錄,另外,可以限制登錄驗證的時間(默認爲2分鐘)及最大重試次數,若超過限制後仍未登錄則斷開連接。
[root@localhost ~]# vim /etc/ssh/sshd_config .....//省略部分內容 LoginGraceTime 2m //登陸驗證時間爲2分鐘 PermitRootLogin yes //允許root用戶登陸 #StrictModes yes MaxAuthTries 6 //最大重試次數爲6 #MaxSessions 10 .....//省略部分內容 PermitEmptyPasswords no //禁止空密碼用戶登陸 .....//省略部分內容
PermitRootLogin yes是允許root登錄,如果不允許把yes改爲no
PermitEmptyPasswords no的意思是禁止空密碼用戶登錄,PasswordAuthentication yes是啓用密碼驗證。
3、登錄驗證方式
對於服務器的遠程管理,除了用戶賬號的安全控制以外,登陸驗證的方式也非常重要。sshd服務支持兩種驗證--密碼驗證、祕鑰對驗證,可以設置只使用其中的一種方式,
也可以兩種都啓用。
[root@localhost ~]# vim /etc/ssh/sshd_config .....//省略部分內容 #RSAAuthentication yes PubkeyAuthentication yes //啓用祕鑰對驗證 AuthorizedKeysFile .ssh/authorized_keys //指定公鑰庫數據文件 #AuthorizedKeysCommand none #AuthorizedKeysCommandRunAs nobody .....//省略部分內容 PasswordAuthentication yes //啓用密碼驗證
4如果希望只允許或禁止某些用戶登錄時,可以使用AllowUsers或DenyUsers,如果只允許某些用戶,如下:
[root@localhost ~]# vim /etc/ssh/sshd_config ....//省略部分內容 # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # ForceCommand cvs server AllowUsers root zhangsan lisi //添加只允許的用戶
5、使用SSH客戶端程序
1).程登陸:ssh [email protected] whoami //確定當前用戶 /sbin/ifconfig eth0 | grep "inet addr" //確認當前主機地址 如果使用了非默認端口號(如2345),則在登陸時必須登陸通過“-p"選項指定端口號。 默認是22,不安全,可以修改端口:vim etc/ssh/sshd_config ssh -p 2345 [email protected]
2).遠程連接到服務器之後,可以使用scp遠程複製的方法在服務器和客戶機之間傳遞文件。 例如:將遠程主機中的/etc/passwd文件複製到本機,並將本機的/etc/vsftpd目錄複製到遠程主機。 scp [email protected]:/etc/passwd /root/chen1.txt scp -r /etc/vsftpd/ [email protected]:/opt
3).通過sftp命令可以利用SSH安全連接與遠程主機上傳,下載文件,採用了類似於ftp的方式。 登陸服務器:sftp [email protected] 上傳文件:put /boot/config-2.6.32-431.e6.x86 下載文件:get /boot/grub.conf 退出:bye 6、在windows客戶端上使用圖形工具xshell連接服務器 安裝後新建會話,輸入用戶名和密碼即可連接,如下圖:
7、構建密鑰對驗證的SSH體系(這種驗證方法更安全)
實驗環境:一共兩臺linux,一臺ssh客戶機192.168.1.2,另一臺linux服務器192.168.1.1
1)在客戶端創建密鑰對
執行命令之後一路回車
2)將公鑰上傳到服務器
3)在服務器中導入公鑰文本
4)在客戶端使用密鑰對驗證(驗證之前別忘記在sshd主配置文件中允許xiaohong)
驗證祕鑰對
8、配置tcp wrappers訪問控制 tcp wrappers機制針對訪問服務的客戶機地址進行訪問控制,對應兩個策略文件/etc/hosts.allow和/etc/hosts.deny,分別用來設置允許和拒絕策略。 策略的應用順序:首先檢查/etc/hosts.allow文件,如果找到匹配策略,則允許訪問,否則繼續檢查/etc/hosts.deny文件,如果找到匹配,則拒絕,如果上述兩個文件都找不到匹配的策略,則允許訪問。 例如:允許192.168.1.2的主機或者192.168.2.0的網段訪問sshd,其他地址被拒絕,執行以下操作。 1)vim /etc/hosts.allow
2)vim /etc/hosts.deny
3)在客戶端上修改ip爲192.168.1.200,測試連接失敗
4)把客戶端的ip改回到192.168.1.2之後,成功連接。