2016年01月09日13:42:30
今天在做SSH时发现,远程服务器的普通用户不设置密码的情况下,客户端不能登陆。
建立链接:用户名为user ,host为主机ip
ssh user@host
SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。
ssh ‐p 2222 user@host
远程传输文件:将本地文件复制到目标主机根目录下,从远程复制到本地,改变一下前后关系就行了
scp /etc/filename root@目标主机ip:/
ssh-keygen -t rsa
上传公钥:
默认当前是可以连接服务器端的. 客户端root权限下,将公钥上传到服务器根目录下
scp /home/xueyunlong/.ssh/id_rsa 6118@192.168.1.99
服务器将公钥添加到指定文件中:
cat id_rsa.pub >> ~/.ssh/authorized_keys
关闭密码登陆,test一把
修改/etc/ssh/sshd.conf文件
PasswordAuthentication no
ssh -i /root/.ssh/id_rsa 6118@192.168.1.99
关闭root登陆
PermitRootLogin no
那么,现在只能通过普通用户公钥登陆喽:
ssh -i /root/.ssh/id_rsa 6118@192.168.1.99
登陆成功
ssh -i /root/.ssh/id_rsa root@192.168.1.99
登陆失败
配置默认密钥
每次敲命令,都要指定私钥,是一个很繁琐的事情,所以我们可以把私钥的路径加入ssh客户端的默认配置里
修改/etc/ssh/ssh_config
其实默认id_rsa就已经加入私钥的路径了,只不过被注释掉了而已
IdentityFile /root/.ssh/id_rsa
如果有其他的私钥,还要再加入其他私钥的路径
IdentityFile /xueyunlong/.ssh/id_rsa
总结:
总结一下,ssh的公钥登陆吧,客户端先生成一个公钥和密钥,密钥由客户端保存(需要妥善保存,一般加上passphrase,一旦被窃取服务器肯定就能随便登录了),公钥服务器端保存。
登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。