发布于 

ssh使用备注

在使用ssh远程登录时,每次都要输入ssh root@ip命令,并且有时候服务器端暴露的ssh端口并不是22,这时候,我们要通过ssh root@ip -p port去远程登录,而当我们敲完这个命令之后还需要去输入对应的密码,我们才可以成功远程登录,当我们需要频繁的使用ssh登录的时候,会非常的麻烦。

通过配置~/.ssh/config实现ssh hostname远程登录

1
2
3
4
5
cd ~/.ssh
# 创建config文件
touch config
# 编辑config文件
vim config

config文件内容如下:

1
2
3
4
5
6
7
8
9
Host hostname1
HostName ip1
User root
Port port1

Host hostname2
HostName ip2
User root
Port port2

这样就可以直接通过ssh hostname1远程登录,接下来就是解决掉输入密码的问题

实现ssh免密登录

进入用户的ssh的目录(本机,不是服务器)

1
cd ~/.ssh

生成ssh公钥和私钥

1
2
3
4
5
ssh-keygen -t rsa -C "email@example.com" -f filename
# -t:生成的秘钥类型
# -C:密钥的备注,一般来说会使用邮箱地址(但不一定得是邮箱,字符串即可)
# -f 创建的秘钥的文件名称
# filename:假设你只有一台服务器,你可以把名字设置成id_rsa,因为ssh默认认为的私钥文件名就是id_rsa,可以免去后面的config设置

执行命令后会生成两个文件,一个是公钥filename.pub,一个是私钥filename,下一步我们需要将公钥放到服务器用户的.ssh目录下的验证文件中,这里可以使用ssh提供的ssh-copy-id工具(当然也可以手动上传,追加到服务器用户ssh目录下的authorized_keys文件中)

1
ssh-copy-id -i ~/.ssh/filename.pub root@hostname

假设生成密钥时候设置的名字不是id_rsa,则需要配置config才可以让ssh使用对应的私钥文件,在配置的主机的信息下面加上IdentityFile的配置:

1
2
3
4
5
Host hostname1
HostName ip1
User root
Port port1
IdentityFile filename # 私钥的名称

到此,客户端配置完毕,接下来要修改服务器上ssh服务的设置了,首先需要将服务器端的ssh服务设置为可以通过秘钥来认证登录,具体操作方法为修改/etc/ssh/sshd_config文件的配置,修改如下:

1
PubkeyAuthentication yes

最好将服务器端的用户目录下的.ssh的所属用户设置为满权限

1
chmod 700 ~/.ssh

修改好上述两个配置后,重启服务器的sshd服务

1
systemctl restart sshd

至此,我们的客户端就可以直接使用ssh hostname直接远程登录了

FAQ

  • 假如在生成密钥文件的时候输入了密码,这个时候有一个比较头疼的问题,需要手动输入生成密钥时候的密码,提示信息为:Enter passphrase for key ‘/Users/**/.ssh/id_rsa’,这个时候可以下面命令进行修改密码

    1
    ssh-keygen -p



Copyright © 2023 ChenWei | Powered By Stellar
本站已运行 00 小时 00