SSH免密登录

我们使用ssh连接远程服务器, 经常需要输入密码, 这一点比较麻烦, 虽然windows上面, 我们可以使用XShell工具, 它可以记住密码, 但有时候我们不希望把密码直接给其他人, 这个时候可以配置证书登录

客户端

生成密钥

ssh-keygen -t rsa

你会在用户目录下发现 .ssh 隐藏文件夹, 里面有 id_rsaid_rsa.pub 两个文件

ls ~/.ssh

注意: 如果自己创建了.ssh文件夹, 请务必确认它的权限是700, 如果不是, 请修改

chmod 700 ~/.ssh

另外, 轻易不要重新生成密钥, 会影响已有密钥的效果

服务器

在远程用户目录中创建.ssh文件夹, 并修改权限

mkdr -p ~/.ssh
chmod 700 ~/.ssh

.ssh目录中创建authorized_keys文件

cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys

将客户端公钥id_rsa.pub的内容追加到authorized_keys

切记.sshauthorized_keys的权限一定要设置正确

注意点

  1. 文件的权限一定要严格按照上面的要求
  2. 客户端哪个用户生成的key, 该用户才能够免密登录
  3. 服务端哪个用户写入了key, 该用户才能被免密登录
  4. 如果服务端authorized_keys不为空, 只能追加客户端的id_rsa.pub, 不能覆盖文件

以上用法是授权客户端免密登录, 这种配置不需要告知客户端, 服务端的密码. 如果已知服务端的密码, 那么就容易多了, 只需要一条命令

使用ssh-copy-id

首先, 客户端还是需要提前生成好密钥后

ssh-keygen -t rsa

远程复制证书

ssh-copy-id -i ~/.ssh/id_rsa.pub root@yinnote.com

注意修改自己的用户名和远程主机地址, 然后根据提示输入远程服务器密码即可, 非常简便

展示评论