ssh远程登录的指令:SSH远程登录的步骤与技巧
ssh远程登录的指令: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 文件中.先用普通密码方式登录远程服务器,在要登录用户的主目录下建立隐藏目录.ssh,并在目录下建立authorized_keys文件(如果已有就不用建立了),并且改变目录和文件权限分别为600和700。命令分别为 chmod 600 authorized_keys 和 chmod 700 ~/.ssh。为了顺利复制,需要注意公钥文件权限应为400
之前文章 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。