一.本地生成公私钥
在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/ssh
scp [本地路径] [服务器用户名]@[服务器IP]:[服务器路径]
注:传递文件夹为 scp -r
- 通过FTP
修改玩配置后,需要重启服务:/sbin/service sshd restart
三.将公钥配置到服务器
- 方便一点可以通过FTP去传文件,但是安全起见,配好密钥后,就不要用FTP,用第二种方式-scp,传完之后,接下来步骤同第二种。
- 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 ~/.ssh
chmod 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 test
ssh -N -f -L [本地映射端口]:[本地IP localhost]:[服务器端口] [config的Host]
test 为之前config
文件中配好的Host
连接中,不能关闭命令行,需要映射多个端口,则开启多个命令行。
推荐使用win10商店中的window Terminal,作为命令行工具,它可以对这个命令进行保存。