Centos7 配置密钥登陆(ssh,免密码)和ssh默认sftp-server

目的:Centos7 配置密钥登陆(ssh,免密码)和ssh默认sftp-server

环境:

系统:Centos 7.5
环境:x64

问题分析:

Centos7 配置ssh免密登陆

方法步骤:

1. 查看是否安装有ssh

执行命令: ssh -V //查找ssh
若输出类似: OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013,说明已经安装。若没有安装,则可以在线安装或者手动安装
a. 在线安装 yum instgall openssh-server -y
b. 手动安装, 下载地址https://cloudflare.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

2. 生成ssh密钥
a. 输入命令,生成密钥。如图

执行命令: ssh-keygen -t rsa      
输入密钥存储路径,直接回车则为默认路径
输入密钥密码
重复确认密码
生成成功

Centos7 配置密钥登陆(ssh,免密码)和ssh默认sftp-server_第1张图片

b. copy密钥并添加权限。

1. 将公钥copy到.ssh/authorized_keys (如没有该文件,可自行创建)中。
    touch authorized_keys 
    cat id_rsa.pub > authorized_keys
2. 分配权限
    chmod 600 authorized_keys 
    chmod 700 .ssh 

ps:
a. 想要哪个账户免密登陆,就su到该用户下,再执行ssh-keygen命令
b. 存储密钥的默认路径是当前用户路径下.ssh, 如test用户,则默认存储路径是/home/test/.ssh/
c. authorized_keys 文件可以自行创建,该文件名不能拼错
d. 私钥的名字可以用重命名来自行更改

3. 修改ssh配置文件并生效

1. 修改sshd_config
输入命令: vim /etc/ssh/sshd_config
修改如下参数:
#端口
Port 22

#配置监听地址
ListenAddress 0.0.0.0
ListenAddress ::

#配置密钥
AuthorizedKeysFile .ssh/authorized_keys 

#使用公钥
PubkeyAuthentication yes

# #使用默认sftp
Subsystem	sftp	/usr/libexec/openssh/sftp-server
#Subsystem sftp internal-sftp 


2. 重启ssh服务,生效
systemctl restart sshd

ps: 若ssh运行异常,可以查看/var/log/secure文件来查看下ssh启动log。

4. 测试使用

a. copy出私钥 /root/.ssh/id_rsa,
b. 使用xshell测试。
c. xftp测试sftp。
d. windows下cmd控制台测试sftp方式:输入命令 sftp -oIdentityFile=密钥绝对路径 -oPort=端口 用户名@地址
如: sftp -oIdentityFile=d:\id_rsa -oPort=22 [email protected]


4. 常见错误

  1. 执行ftp文件操作的时候,windows下200 PORT command successful. Consider using PASV. 553 , 排查两个地方: a. ftp根目录是否有读写权限; b. windows下防火墙关闭。

  2. 配置文件中的密钥位置错误,密钥文件名拼写错误。

  3. 配置完密钥以后,使用密钥登陆服务器,仍然提示需要输入用户密码,原因可能是:A. 用户和文件权限问题; B. 配置文件。解决方式:
    A:
    //用户权限
    chmod 700 /home/username

    //.ssh文件夹权限
    chmod 700 ~/.ssh/

    // ~/.ssh/authorized_keys 文件权限
    chmod 600 ~/.ssh/authorized_keys
    B:
    vim /etc/ssh/sshd_config,确认修改如下行
    AuthorizedKeysFile .ssh/authorized_keys

    修改以后systemctl restart sshd 重启生效


结束

你可能感兴趣的:(Linux)