linux ssh远程登录_SSH远程登录的步骤与技巧

7519cad071d43089fdfed23a3d9e4563.png

之前文章 SSH采用密钥替代密码登录的方法和步骤 中介绍了SSH时采用密钥代替密码登录的基本方法和步骤,但在实际操作中,可能还会遇到一些其他的困难和问题,本文就SSH方式登录远程服务器的要点和步骤进一步归纳整理,以提供具体可操作步骤。SSH是远程登录linux服务器的常用方式,因此,为了实现本文内容,需要有一台Linux系统的服务器和一台客户机(本文客户机是Opensuse Linux系统,在Windows和Mac下实现方式可能略有不同)。

1. 密钥对生成

所谓密钥对,可以理解为钥匙和锁,公钥就是锁,挂在墙上谁都能看到,私钥就是钥匙,只能拿在自己手中。一把钥匙开一把锁,因此密钥总是成对出现的。在Linux系统下,可以使用ssh-keygen -t rsa命令生成密钥,这里-t rsa指的密钥类型,默认长度2048位,也可以通过-b 4096修改长度(比如4096位)。

生成SSH Key的过程中会要求你指定一个文件来保存密钥,按Enter键使用默认的文件就行了.然后需要输入一个密码来加密你的SSH Key.SSH密钥会保存在当前用户主目录home下的.ssh/id_rsa文件中.SSH公钥保存在.ssh/id_rsa.pub文件中.(如果在命令前面加sudo,则可能放在root用户目录下,一般不建议)。如果要将生成的密钥对备份,建议采用专用的U盘,保存在其他地方可能因为密钥丢失造成损失。

为了顺利复制,需要注意公钥文件权限应为400,可以通过chmod 400 id_rsa.pub来改变。

2. 复制公钥到服务器

在密钥对生成之后,需要将公钥添加到服务器中,相当与把锁挂在门上。但和物理的锁不同,一个服务器可以不仅仅只有一个公钥。如果几个不同的用户登录,可以每个人将自己的公钥添加到服务器上,然后各自凭各自的私钥就可以登录服务器。将公钥复制到服务器也有几种办法,但前提是公钥服务器对应位置的文件夹和文件权限允许。

先用普通密码方式登录远程服务器,在要登录用户的主目录下建立隐藏目录.ssh,并在目录下建立authorized_keys文件(如果已有就不用建立了),并且改变目录和文件权限分别为600和700。命令分别为 chmod 600 authorized_keys 和 chmod 700 ~/.ssh。

复制公钥可以用以下几种命令,其中最便捷的ssh-copy-id命令,只要输入ssh-copy-id username@remote-server -p +++,其中username和remote-server-ip换成服务器用户名和地址(ip地址或域名),默认端口22则不需要后面参数,否则需要加上 -p 和ssh端口号。输入远程用户的密码后,SSH公钥就会自动上传了.SSH公钥保存在远程Linux服务器的 .ssh/authorized_keys 文件中.

也可以用命令组合直接将公钥命令追加到远程服务器文件中,这需要对shell操作有一定了解。参考命令如下:这一命令组合了cat和ssh,如果需要改变端口同样在host后面加-p 和端口号。

cat ~/.ssh/id_rsa.pub | ssh user@host “cat – >> ~/.ssh/authorized_keys”

除此之外,也可以通过scp命令将公钥拷贝到服务器上,再通过cat命令进行添加。这一命令可以理解为前一个命令的分解动作,实际使用中,scp也是在两个电脑之间复制文件的最常用的命令之一。

scp /home/.ssh/id_rsa.pub root@192.168.1.65:/home/.ssh/id_rsa.pub (也可以修改文件名)然后登录到服务器上用cat命令追加文件内容:

cat id_rsa.pub >> authorized_keys

3. 设置服务器配置文件,允许密钥登录

打开并编辑 /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthentication yes

PubkeyAuthentication yes

另外,请留意 root 用户能否通过 SSH 登录:

PermitRootLogin yes

当你完成全部设置,并以密钥方式登录成功后,如果要提高系统安全性,避免无聊或者有特殊目的的黑客骚扰,可以禁用密码登录:

PasswordAuthentication no

最后,重启 SSH 服务:

[root@host .ssh]$ service sshd restart

4. 设置别名,快速访问服务器

如果管理的服务器不止一个(或者即使只有一个)。即使少去输密码的过程,每次登录时都要记住ip地址或者域名、端口也实在是件头疼的事。这样设置别名就非常重要了。在windows下,由于登录ssh一般需要第三方软件,在录入服务器时其实已经完成了设置别名的过程。而在linux下,则需要修改(或新建)config文件来实现别名。

在客户机主目录的.ssh目录下新建或修改config文件(~/.ssh/config),按照如下方式输入服务器信息:

Host ecs // 输入远程服务器的别名,也就是后续要使用的简单名称,如果对同一个服务器要设置不同别名,只要名称之间用空格隔开即可。

HostName 192.*.*.* // 输入服务器的IP地址,或者域名

Port 22 // 输入端口号,默认为22

User root // 输入登录账号

IdentityFile ~/.ssh/id_rsa // 输入私钥文件在本机的地址

如果有多个服务器,则按照上述格式依次添加,添加完成并保存之后,输入 ssh ecs(别名)就可以直接访问对应服务器了。当然,如果你的密钥有加密保护(建议要有)的话,仍然需要输入一次密码。

此外,上传密钥并不一定要完全禁用密码等等,实际使用也可以用-i参数直接用密钥登录,用法比如:ssh -i /root/mysshkey.pem root@10.10.10.100。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值