实现软件:
OpenSSH, SSH Communications Security Corporation
sshd: SSH服务端程序
ssh: SSH客户端程序
密码登录
- Client发送登录请求,Server收到后,向Client发送public key
- Client使用public key加密登录密码,并发送至Server
- Server使用private key解密密码,并验证是否允许登录
危险:man-in-the-middle截获登录请求,冒充Server。
解决方法:提示key fingerprint,用户自行核对。
公钥登录
- Client将public key发送并保存在Server上
- Client发送登录请求,Server随机产生字符串,并发送给Client
- Client使用private key将字符串加密,并发送给Server
- Server使用public key解密字符串,并验证是否允许登录
ssh-agent
执行eval `ssh-agent -s`
ssh-agent 启动后,只需首次连接时输入passphrase,之后这个key的信息就会保存在ssh-agent里,即不必再输入passphrase。
Tips:
- .ssh目录权限必须是700
- 使用
ssh-copy-id
将公钥发送至Server:ssh-copy-id -i ~/.ssh/mykey user@host
authorized_keys的权限必须是600