修改服务器sshd配置

#vim /etc/ssh/sshd_conf
#禁用root
PermitRootLogin no
#是否检查相关文档权限,如.ssh/*
StrictModes no
#是否允许密钥登陆
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

#如果不需要证书登陆,禁用密码登陆
PasswordAuthentication no

#重启sshd
#service sshd restart
#/etc/init.d/sshd restart

客户端配置

#生成密钥,按照提示一步步进行,需要输入密钥名称和密码,也可留空即可
cd ~/.ssh
ssh-keygen -t rsa
#添加私钥,如果密钥设有密码,此处需要输入
ssh-agent bash --login -i
ssh-add ${your_rsa_id}

#修改私钥路径配置/etc/ssh/ssh_config,可以配置多个
IdentityFile ~/.ssh/${your_rsa_id}

客户端分发公钥

authorized_keys管理可登陆到本机的远程机器公钥,known_hosts 管理本机登陆过的远程机器的公钥

#分发公钥到服务端,需要远程服务端的用户名和密码
ssh-copy-id -i ./${your_rsa_id}.pub ${remote_user}@${remote_ip}

#也可手工copy公钥文件到服务端,添加到authorized_keys 文件后面,如果文件或文件夹不存在,可手工新建
#[服务端执行]
cd ~/.ssh
chmod 700 authorized_keys
cat ${path_to_your_rsa_id_pub} >> authorized_keys
chmod 600 authorized_keys

#登陆远程服务端
ssh ${remote_user}@${remote_ip}

将私钥加入用户空间

配置好公钥后,需要重启才能将私钥加入当前ssh中。如果想直接载入当前运行的ssh,需要运行命令:

#载入私钥
ssh-add ${path-to-privatekey}

#如果报错ssh-agent无法连接,则启动ssh-agent
ssh-agent bash

上面的方法适用于只有一个私钥存在的情况,如果有多个私钥,则需要配置~/.ssh/config文件,让ssh在运行时动态加载对应的私钥。

通过config文件管理远程主机

config文件在用户目录下的.ssh文件夹中,如果不存在则需要先创建。其内容由多个远程主机的配置段构成,每段的代码如下。

#编辑~/.ssh/config文件
vim ~/.ssh/config

#语法如下:
Host ${NickName}
    HostName ${remote_ip_or_hostname}
    IdentityFile ${path_to_your_rsa}
    User ${login_name}   #默认root
    Port ${remote_port}  #默认22
    LocalForward ${local_port} ${remote_ip}:${remote_port} #可省略

配置好之后,可以通过ssh ${NickName}直接连接。如果配置有端口转发,则可用远程主机:ip访问本地端口。

Windows下的登陆配置

基础过程跟上面Linux配置过程相似,根据客户端不同,配置对应客户端类的属性即可