ssh之pub-key登陆服务器
ssh无密码登陆服务器
- 服务器配置
- 客户端配置
- sudo权限配置
- scp上传下载方法
- 错误处理
- 所选的用户密钥未在远程主机上注册
服务器配置
1.创建用户
useradd demo
2.设置用户密码
passwd demo
# 输入密码
# 回车
3.生成 .ssh目录
# 切换用户
su demo
# 生成密钥
ssh-keygen -t rsa -b 4096 -C 'demo@demo.com'
# 进入 ssh目录
cd ~/.ssh
# 查看密钥
ls -a
# 回车
# 是否输入密码 看个人情况
4.配置sshd_config
# 打开sshd_config
vim /etc/ssh/sshd_config
# 去掉前面的注释
PubkeyAuthentication yes # 允许公钥登陆
AuthorizedKeysFile .ssh/authorized_keys # 表示存放pub-key的地址
PasswordAuthentication yes # 表示允许密码登陆 注意:当公钥能连上服务器时 要改为 no
客户端配置
1.打开git bash
# 生成密钥
ssh-keygen -t rsa -b 4096 -C '备注'
# 回车
# 是否输入密码 看个人情况
2.进入 .ssh目录
cd ~/.ssh
# 查看所有文件包括隐藏目录
ls -a
3.scp上传pub-key
scp id_rsa.pub 用户名@服务器ip地址:/tmp
# 例子:
scp id_rsa.pub demo@192.168.2.1:/tmp
4.服务器配置
# 进入临时目录
cd /tmp
# 查看上传的pub-key文件
ls -a
# 重命名 pub-key文件
mv id_rsa.pub authorized_keys
# 移动pub-key文件到 .ssh目录下
mv authorized_keys ~/.ssh
5.连接测试
ssh demo@192.168.2.1
# 连接成功 并且不用输入密码
# 失败 则检查前面配置
sudo权限配置
1.修改sudoers 文件权限
# 给予写权限
chmod 777 /etc/sudoers
# 打sudoers文件
vim /etc/sudoers
# 在Allow root to run any commands anywhere下添加 和root 一样的配置
user ALL=(ALL) ALL
# 保存退出
2.修改sudoers权限为 440
chmod 440 /etc/sudoers
scp上传下载方法
1.上传文件
scp file user@service_ip:/dir
2.下载文件
scp user@service_ip:/dir/file /local/dir
3.上传目录到服务器
scp -r /local/dir user@service_ip:/dir
4.下载服务器目录到本地
scp -r user@service_ip:/dir /tmp/local_dir
错误处理
所选的用户密钥未在远程主机上注册
这是 .ssh目录的权限问题导致,解决办法如下
cd ~
sudo chmod 700 .ssh
cd .ssh
sudo chmod 600 *
还没有评论,来说两句吧...