SSH的使用和概要
SSH服務(TCP端口號22):安全的命令解釋器
為客 戶機提供安全的Shell 環境,用於遠程管理
SSH基於公鑰加密(非對稱加密)技術: 數據加密傳輸; 客戶端和服務器的身份驗證;
公鑰 和 私鑰 是成對生成的,這兩個密鑰互不相同,兩個密鑰可以互相加密和解密;
不能根據一個密鑰而推算出另外一個密鑰;
公鑰對外公開,私鑰只有私鑰的持有人才知道;
www.2cto.com
數據加密 和 數字簽名 (根據功能不同分的)
發送方使用接受方的公鑰加密數據;
接受方使用自己的私鑰解密數據;
數據加密保證了所發送數據的機密性;
數字簽名:(數字簽名保證數據完整性、身份驗證和不可否認)
發送方:對原始數據執行HASH算法得到摘要值;發送方用自己的私鑰加密摘要值;
將加密的摘要值與原始數據發送給接受方;
接受方:用發送方公鑰解密摘要值,同時對收到的原始數據同樣執行HASH產生另一種摘要值;
將解密的摘要值與產生的摘要值對比;
www.2cto.com
OpenSSH:
服務端主程序:/usr/sbin/sshd
客戶端主程序:/usr/bin/ssh
服務端配置文件:/etc/ssh/sshd_config (重啟shhd服務生效)
客戶端配置文件:/etc/ssh/ssh_config
SSH登錄使用的用戶名:服務器中的本地系統用戶的帳號名;
SSH登錄的用戶驗證方式
密碼驗證:使用服務器中系統帳號對應的密碼;(PasswordAuthentcation yes)
密鑰對驗證:使用客戶端中生成的公鑰、私鑰;(PubkeyAuthentication yes AuthorizedKeyFile .ssh/authorized_keys)
使用ssh命令遠程登錄方法:
1.ssh 用戶名@服務器地址
2.ssh -l 用戶名 服務器地址 (較少用)
3.ssh 服務器地址(服務器正在使用哪個用戶就以哪個用戶登錄)
另外一些常用SSH相關的命令:
passwd #修改當前用戶密碼
groupadd SSH #添加組
useradd -g SSH -s /bin/'bash' -d /home/user1 user1 #添加用戶
passwd user1 #為用戶user1創建密碼
userdel user1 #刪除用戶user1
groupdel SSH #刪除組SSH
停用帳號,VIM編輯密碼文件,在用戶名後添加 ":*" 。 www.2cto.com
vim /etc/shadow
1
2
service sshd restart # 重啟sshd
ps -aux | grep sshd #查看是否運行成功
客戶端密鑰存放位置
~.ssh目錄下
服務器端的密鑰存放位置
/etc/ssh/ssh_host_*
known_hosts 存放訪問過的服務器的公鑰
authorized_keys 存放需要驗證的客戶機的公鑰
.ssh文件夾和下面的文件權限的組和其它人不能有w權限
ssh訪問很慢的原因和解決辦法
原因:訪問服務器的時候會把服務器的ip地址反向解析為域名,如果無法解析就會導致登陸時很慢
下面三種方法都可以解決這個問題
1、清空/etc/resolv.conf文件中nameserver記錄
2、在客戶機的/etc/hosts文件中添加服務器域名的解析記錄
3、修改客戶機的/etc/ssh/ssh_config文件中:GSSAPIAuthentication no
問題二:若是公鑰文件出了問題,會導致無法認證,解決方法,就是把文件刪除
rm -rf /root/.ssh/know_hosts
service sshd restart
配置案例: www.2cto.com
密碼方式:
service sshd restart 重啟服務
netstat -anpt | grep sshd 查看端口
登錄主機:ssh
[email protected]
ssh直接在遠程主機上新建用戶: ssh
[email protected] adduser txy
在密碼認證的時候要看:服務器端中的 /etc/ssh/sshd_config 中PasswordAuthentcation yes,,才能用密碼認證
第一次訪問服務器時不用輸入yes
ssh -o StrictHostKeyChecking=no
[email protected]
/etc/ssh/ssh_config客戶端文件
StrictHostKeyChecking no 第一次訪問服務器時不用輸入yes
秘鑰方式 www.2cto.com
這裡的例子是一個普通用戶登錄到服務器中的普通用戶,root用戶登錄就更加簡單,不用創建文件,不用修改權限,生成秘鑰的地方的root下
復制scp的地方也在root下:
服務器端
查看文件:修改 /etc/ssh/sshd_config中 PubkeyAuthentication yes
創建文件: mkdir /home/xiaohua/.ssh
修改文件權限: chomd -R 600 /home/xiaohu/.ssh 在這個文件中別的用戶不能有w權限
客戶端:
useradd xiaolue
su - xiaolue
ssh-keygen
scp /home/xiaolue/.ssh/id_rsa.pub
[email protected]:/home/xiaohua/.ssh/authorized_keys
訪問控制:
/etc/hosts.allow 優先於下面的
/etc/hosts.deny
首先檢查hosts.allow文件,若找到相匹配的策略,則允許訪問;否則繼續檢查hosts.deny文件,若找到了
相匹配的策略,則拒絕訪問;如果兩個文件中都沒有相匹配的策略,則允許訪問; www.2cto.com
vim /etc/hosts.allow
sshd:210.13.218.*:allow 允許登錄的ip ,allow可以省略
它能控制服務的范圍:1,受super daemon (xinetd) 服務管理
2,受支持libwrap.so模塊的服務
查看具體服務是否控制:ldd /usr/sbin/sshd | grep wrap
idd $(which 服務) | grep wrap
修改後要重啟服務:service xined restart