ssh [-l login_name] [-p port] [user@]hostname
#不指定用户,默认使用root账号登录
ssh 192.168.0.66
#指定用户
ssh -l root 192.168.0.66
ssh root@192.168.0.66
#指定端口
ssh -p 123 192.168.0.66
ssh -p 123 root@192.168.0.66
/etc/ssh/sshd_config
PermitRootLogin no
service sshd restart
,systemctl restart sshd
SSH之所以能够保证安全,原因在于它采用了公钥加密。
整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。
ssh-keygen
ssh-copy-id user@host
RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys
远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。
ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
scp [参数] [原路径] [目标路径]
scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_ip:remote_folder
scp remote_username@remote_ip:remote_folder local_file