SSH原理
ssh是一种网络协议,用于计算机之间的加密登陆。
windows:PuTTY
linux:OpenSSH
用法
- 口令登陆:
第一次登陆对方主机,系统会出现如下提示,表示无法确认host主机的真实性,只知道公钥指纹,是否继续连接
$ ssh user@host
The authenticity of host 'host (192.168.1.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
输入yes后,系统会提示,host主机已经得到认可
Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.
然后输入密码就可以登录了。
当远程主机的公钥被接受以后,会保存在~/.ssh.known_hosts之中。下次在连接这台主机,系统会跳过警告部分,直接提示输入密码。
- 公钥登陆:
原理:用户将自己的公钥存储到远程主机上,登陆的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发送回来。远程主机用储存的公钥解密,解密成功则直接登陆。
$ ssh-keygen
运行结束后会在~/.ssh/目录下生成:id_rsa.pub和id_rsa。前者是公钥,后者是私钥。
ssh-copy-id user@root
使用上面的命令将公钥拷贝到远程主机,登陆的时候就不需要密码。
注意使用公钥登陆的时候,在/etc/ssh/sshd_config配置文件中,需要开启以下权限
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后执行service sshd restart重启服务。
SSH配置文件
ssh客户端配置文件:/etc/ssh/ssh_config
ssh服务端配置文件:/etc/ssh/sshd_config
具体使用可以使用man 5 ssh_config或ssh 5 sshd_config。
SSH连接不上服务器的原因:
1.SSH服务没有开启
$ ps -ef|grep ssh
$ /etc/init.d/sshd restart
2.防火墙没有关闭
$ /etc/init.d/iptables stop
$ getenforce
$ setenforce 0
3.配置文件中不允许用户远程登陆
$ vi /etc/ssh/sshd_config
PermitRootLogin yes
$ service sshd restart
附录
- ps
- selinux