1 SSH Secure Shell Protocol。 遠程登錄,sftp服務。
2 ssh linux下的客戶端就是ssh,可以實現遠程拷貝 scp。
3 linux下的ssh 服務 /etc/init.d/sshd start
ps -ef | grep sshd netstat -lntup | grep sshd
4 檢測是否可連上某個服務器的服務
a: 檢測物理網絡是否通 ping ip
b: telnet 端口 ,看看服務是不是開了
5 ssh 兩個版本,2穩定,1有漏洞。
6 linux ssh客戶端功能包括ssh遠程連接和scp遠程拷貝; ssh服務端包括遠程登錄服務和sftp服務。
7 rpm -qa openssh openssl
遠程連接是 openssh ,遠程加密是openssl
8 ssh 版本不同是連接不上的 ,ssh 是daemon進程
9 ssh 配置文件
/etc/ssh/ssh_config 客戶端
/etc/ssh/sshd_config 服務端
10 ssh 2版本支持兩種祕鑰 RSA 和 DSA , ssh1 只支持 RSA
11 ssh 認證類型
a:基於口令的驗證, 賬號密碼形式
b:基於祕鑰的驗證,服務端產生祕鑰對,公鑰放到服務端,私鑰放到客戶端。
12 ssh 企業級安裝設置
a: 修改端口,限制某一個ip登錄,只允許內網IP登錄,不允許root登錄
13 sshd_conf 編輯(ssh 服務端優化)
Port 端口修改
ListenAddress 接聽地址修改 IP:Port
GSSAPIAuthentication no 將yes註釋掉,連接慢就是這個影響的
UseDNS no 將use dns改成no,連接慢也是這個影響的
PermitRootLogin no禁止root用戶登錄
PermitEmptyPasswords no 禁止空密碼登錄
/etc/init.d/sshd reload 平滑重啓
14 遠程連接 ssh -p{Port} {username}@IP
15 visudo 給用戶提權
添加 username All=(All) NOPASSWORD:All
16 如何防止ssh登錄***
用祕鑰登錄,上面sshd_conf 配置(牤牛陣法),防火牆關閉ssh,制定源IP限制(局域網,信任公網),開啓ssh只監聽本地內網IP,儘量不給服務器外網IP
17 ssh 命令
連接 : ssh -p{端口號} {用戶名}@ip {command}
~/.ssh/know_hosts 客戶端存放服務端公鑰的文件
scp 遠程拷貝
scp -P{端口號} -r(目錄拷貝) -p(保持屬性) /etc/hosts {username}@ip:/tmp
例子: 推數據 : scp -P5213 -rp /etc sshuser@ip:/tmp
拉數據: scp -P5213 -rp sshuser@ip:/tmp /etc
-l 屬性 限速,防止在拷貝的時候佔滿帶寬。
-t 屬性 打開終端。
sftp 上傳
sftp -oPort={端口號} {遠程用戶名}@ip
上傳:
連上後, put {文件} 將本地文件上傳到服務端
例子 : put /etc/hosts 上傳到家目錄
put /etc/hosts /tmp 上傳到/tmp 目錄下
下載:
get /etc/hosts /home
sftp 不支持目錄,需要打包。(限定sftp登錄後只限定指定目錄下,不允許切換到其他目錄)
18 ssh 批量管理
a:創建用戶及密碼(在所有機器上創建用戶)
useradd test
echo 123456 | passwd --stdin test
b: 生成祕鑰
su - test
ssh-keygen -t rsa
非交互式創建祕鑰
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa > /dev/null 2>&1
c: 將公鑰發到管理機上
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p {port} test@ip"
(最終的在管理機上的名字 .ssh/authorized_keys,文件名是在 /etc/ssh/sshd_conf 中配置的)
19: sudo 實現沒有權限用戶拷貝
suid 實現沒有權限用戶拷貝(工作中不要用)
sudo 提權方法
visudo
底下添加
test ALL=(ALL) NOPASSWORD: /usr/bin/rsync
用戶名 所有角色,可以 ALL= 就是root 不需要password可以執行的命令
echo "test ALL=(ALL) NOPASSWORD: /usr/bin/rsync" >>/etc/sudoers
visudo -c 檢查語法
使用遠程sudo,需要加參數 -t /etc/sudoers 裏查-t
20 非交互式 expect (sshpass,pssh)
rpm -qa expect
非交互式生成密鑰並批量管理
!#/usr/bin/expcet
spawn ssh-copy-id -i ~/.ssh/id_rsa.pub "-p {port} test@ip"
expect {
"yes/no" {send "yes\r" :exp_continue}
"password {send "$password\r"}
}