ssh免密登录

我们使用ssh连接远程服务器, 经常需要输入密码, 这一点比较麻烦, 在windows上面, 我们可以使用XShell工具, 因为它可以记住密码, 如果我们使用MacUbantu, 那么比较麻烦了. 好在linux有提供公钥免密登录

客户端

ssh-keygen -t rsa -P 'your password'

也可以不使用 -P 参数, 建议最好使用, 毕竟涉及安全问题

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

ls ~/.ssh

注意: 如果.ssh是自己手动创建的, 请确认它的权限是 700

chmod 700 ~/.ssh

id_rsa.pub发送到远程服务器, 这里可以使用scp命令, 当然使用ftpsftp工具均可

scp -P 22 ~/.ssh/id_rsa.pub 用户名@服务器地址:用户目录/.ssh/tmp.pub

服务器

当客户端将id_rsa.pub上传之后, 需要将其添加到认证文件authorized_keys

# 在用户目录中创建 .ssh 文件夹
cd ~
mkdir .ssh
chmod 700 .ssh

# 在.ssh目录中创建authorized_keys文件
cd .ssh
touch authorized_keys
chmod 600 authorized_keys

# 将客户端的公钥写入
cat ~/.ssh/tmp.pub >> authorized_keys

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

注意点

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

命令 ssh-copy-id

当客户端生成好密钥后, 也可以通过 ssh-copy-id 命令添加到服务端, 这样可以避免权限的问题, 只需简单的一行命令即可

ssh-copy-id -i  ~/.ssh/id_rsa.pub [email protected]

不直接介绍这个命令是因为, 上述的配置可以弄清证书登录的原理, 改命令只是将这些步骤一次执行完

你可能感兴趣的:(ssh免密登录)