构建SSH远程管理
---------SSH服务器-------------Client---------
192.168.1.1 192.168.1.100
一、密码验证
root@localhost ~]# vi /etc/ssh/sshd_config 修改:
Port 22
Protocol 2
ListenAddress 192.168.1.1
UseDNS no
PermitRootLogin no
PermitEmptyPasswords no
LoginGraceTime 2m
MaxAuthTries 6
AllowUsers hehe xixi@192.168.1.100 客户端验证:
[root@localhost ~]# ssh 192.168.1.1
[root@localhost ~]# ssh hehe@192.168.1.1
[root@localhost ~]# ssh haha@192.168.1.1
[root@localhost ~]# ssh xixi@192.168.1.1
二、秘钥对验证
例如:
ssh-keygen -b 4096 -t dsa
客户端:
[root@localhost ~]#ssh-keygen
[root@localhost ~]#ssh-copy-id -i /home/hehe/.ssh/id_rsa.pub root@192.168.1.1
注意:ssh-copy-id:把密钥追加到远程主机的 .ssh/authorized_key 上
[root@localhost ~]#ssh root@192.168.1.1
或者
[hehe@localhost .ssh]$ ssh-keygen
[hehe@localhost .ssh]$ scp id_rsa.pub root@192.168.1.1:/root/
注意:在上传公钥时,不要关闭密码验证,否则将无法上传。
服务器端:
[root@localhost ~]# vim /etc/ssh/sshd_config
修改:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
[root@localhost ~]#cp /root/id_rsa.pub /root/.ssh/authorized_keys
增加其他用户
[root@localhost ~]#cat id_rsa.pub >> .ssh/authorized_keys
[root@localhost ~]# service sshd restart
客户端验证:
[hehe@localhost .ssh]$ ssh root@192.168.1.1 结论:不使用密码。而是使用秘钥对验证登录。
思考:如果客户端lisi用户,把公钥拷贝到了服务端han用户下。将会怎么样?
(lisi用户ssh han@192.168.56.200时无需密码)
远程执行命令:ssh root@192.168.56.200 date
-**----------------------------------
讲解scp命令
1、本地—>>>—服务器(类似上传)
文件:
[root@localhost ~]# scp 222.txt root@192.168.1.1:/root
目录:
[root@localhost ~]# scp -r /root/hehe root@192.168.1.1:/root
2、服务器—>>>—本地(类似下载)
文件:
[root@localhost ~]# scp root@192.168.1.1:/root/222.txt ./
目录:
[root@localhost ~]# scp -r root@192.168.1.1:/root/hehe ./
- ssh命令用法
连接到远程主机
# ssh root@192.168.1.120 // 默认连接到目标主机的tcp 22端口
连接到其他ssh端口
# ssh -p 10022 root@192.168.1.120
连接到远程主机,并执行一条命令
# ssh root@192.168.1.120 ls -l
在ssh命令后面,直接加上在远程主机上要执行的命令。
打开调试模式
# ssh -v root@192.168.1.120
-v参数追踪调试建立的SSH连接,可以看到在哪个环节出了问题。
对所有数据请求压缩
# ssh -C root@192.168.1.120
所有通过ssh发送或接收的数据将会被压缩,并且仍然是加密的。
指定ssh源地址
如果你的ssh客户端有多于两个以上的IP地址,可以使用-b选项来指定一个IP地址。这个IP将会被用做建立连接的源地址。
# ssh -b 192.168.0.200 root@192.168.1.120
查看是否已经添加了对应主机的ssh密钥
# ssh-keygen -F 192.168.1.120
删除对应主机的ssh访问密钥
# ssh-keygen -R 192.168.1.120
也可以在主机的~/.ssh/known_hosts文件中手动删除公钥。
个人总结github地址:https://github.com/luoyan321?tab=repositories 有兴趣的同学可以看看