一.本地生成公私钥

在cmd命令行中输入:
ssh-keygen -t rsa

后缀解释:
-t 密钥类型
-b 生成的密钥长度,默认为3072
-C 备注,可以填邮箱之类的,要带上引号

一路回车就好了,生成好是长这样子的:

云服务器密码机工作原理_云服务器密码机工作原理


在用户文件夹下的.ssh文件夹生成(C\Users\[你的用户名]\.ssh),.ssh可能是隐藏文件夹(自行百度)

id_rsa 私钥 / id_rsa.pub 公钥

二.修改服务器ssh的相关配置

编辑/etc/ssh/sshd_config,有#注释的去掉,没有的加上。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile   .ssh/authorized_keys

编辑的方式:

  • 通过vim编辑
  • vim /etc/ssh/sshd_config
  • i进入编辑模式,编辑之后按esc退出编辑模式,输入:wq回车进行保存
  • 通过scp将文件拉下来改,再传上去(scp命令输完后,需输入服务器密码)
  • 拉取到当前路径下:
    scp root@[服务器IP地址]:/etc/ssh/sshd_config ./scp [服务器用户名]@[服务器IP]:[服务器路径] [本地路径]
  • 改完后上传:
    scp ./sshd_config root@[服务器IP地址]:/etc/sshscp [本地路径] [服务器用户名]@[服务器IP]:[服务器路径]注:传递文件夹为 scp -r
  • 通过FTP

修改玩配置后,需要重启服务:/sbin/service sshd restart

三.将公钥配置到服务器

  1. 方便一点可以通过FTP去传文件,但是安全起见,配好密钥后,就不要用FTP,用第二种方式-scp,传完之后,接下来步骤同第二种。
  2. scp方式传递文件(scp命令输完后,需输入服务器密码)
  • 将公钥传递至服务器,在cmd命令行中输入:
    scp .\.ssh\id_rsa.pub root@[你的服务器IP]:~/scp [本地路径] [服务器用户名]@[服务器IP]:[服务器路径]
  • 将公钥添加至认证文件,在服务器中输入命令
    (这里无论是root还是其它用户都这么写,~/会进行指向)
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  • 添加完毕后删除上传的公钥,在服务器中输入命令
    rm ~/id_rsa.pub
  • 给.ssh文件夹和authorized_keys文件权限,在服务器中输入命令
    chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys

注:或者在本地创建或拉取authorized_keys文件,手动添加公钥,再进行上传。

四.本地修改配置文件

位置在之前公私钥生成的地方:C\Users\[你的用户名]\.ssh 看看是否有config文件,没有则需要新建,注意没有后缀。
用记事本打开config,增加以下内容:

Host test
     HostName [服务器IP]
     User root [服务器用户名]
     Port 22 [ssh端口]
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/id_rsa [私钥路径]

保存了之后,可以在cmd命令行中输入:ssh test 或者 ssh root@test 就直接连上服务器了!
test的名字可以自定义,记得要把括号和括号里的字删掉,这个只是提示!

五.关闭服务器的密码登录

修改文件:/etc/ssh/sshd_config

PasswordAuthentication no

然后重启:systemctl restart sshd 注:用密码登录,可以用passwd修改密码,也可以不关闭,把密码设个二十位复杂点。

六.通过ssh访问服务器的端口

比如 3306数据库,在命令行中输入:
ssh -N -f -L 3306:localhost:3306 testssh -N -f -L [本地映射端口]:[本地IP localhost]:[服务器端口] [config的Host] test 为之前config文件中配好的Host
连接中,不能关闭命令行,需要映射多个端口,则开启多个命令行。

推荐使用win10商店中的window Terminal,作为命令行工具,它可以对这个命令进行保存。