赞
踩
通常习惯在客户端的用户目录下的.ssh目录下使用命令ssh-keygen -t rsa生成公钥和私钥,在.ssh/目录下,会新生成两个文件:id_rsa.pub(公钥)和 id_rsa(私钥)。
此时,客户端无需再进行任何配置,将id_rsa.pub存放到服务端。但是存放在什么位置呢?我这边是放到了服务端用户目录下的xx目录/.ssh目录下,并将id_rsa.pub(公钥)文件改名为authorized_keys(mv id_rsa.pub authorized_keys)。
本博客主要阐述客户端和服务端都是用管理员(不是超级管理员)账号如何配置客户端文件、目录等,以及如何解决一些由于权限问题导致配置失败的问题。
服务端配置如下:
- 首先查看当前用户,找到你当前登录的用户路径信息
- cat /etc/passwd
-
- 按照用户路径显示其详细信息,可能是个链接,指向一个新地址,
- 例如我查看是 /var/serives/homes,而homes -> /volume1/@fake_home_link,
- 因此我需要在/volume1/@fake_home_link下创建user/.ssh目录,然后将authorized_keys文件存放进去。
- cd /var/serives
- ls -l
- cd /volume1
- ls
- sudo mkdir -p @fake_home_link/user
-
- 创建完毕后给目录递归赋权限
- sudo chmod 755 -R \@fake_home_link/
-
- 设置user目录属于user用户
- cd \@fake_home_link
- sudo chown user user/
-
- 在user目录下创建.ssh目录
- cd user/
- mkdir .ssh
- ls -a
-
- 显示出.shh目录结构后,将authorized_keys文件存放到.ssh路径下,并设置authorized_keys属于kejia用户。
- cd .ssh
- mv id_rsa.pub authorized_keys
-
- ※注意!!! 设置authorized_keys的文件权限为只读(444或者400)大坑,否则会导致ssh密钥登录失败。
- chomd 444 authorized_keys
-
- 最后还需要修改一下服务端的ssh配置文件
- cd /etc/ssh
- sudo vim sshd_config
- PubkeyAuthentication yes前边注释#去掉,
- 然后将AuthorizedKeysFile 前面的注释#去掉 并将其后边改为.ssh/authorized_keys
-
- 重新启动ssh服务,并检查其状态
- sudo systemctl restart sshd
- sudo systemctl status sshd
-
-
配置完后,就可以在客户端使用密钥ssh服务器了,使用如下方法,还可以使用外部程序,控制服务端的重启、关机功能。(如果你是不知道超级管理员的账户密码,可以使用如下代码来使用管理员账号,通过一行命令完成且不需要手动输入密码,完成程序自动调用开关机功能。)
- ssh user@192.xx.xx.xx <<EOF
- echo "password" | sudo -S shutdown now
- EOF
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。