如何使用SSH密钥方式登录Linux
我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。
密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。
下面来讲解如何在 Linux 服务器上制作密钥对,将公钥添加给账户,设置 SSH,最后通过客户端登录。
1 制作密钥对
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
[root@host ~]$ ssh-keygen <== 建立密钥对
Generating public/private rsa key pair
Enter file in which to save the key (/root/ssh/id_rsa): <== 按 Enter
Created directory '/root/ssh'
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/ssh/id_rsa <== 私钥
Your public key has been saved in /root/ssh/id_rsapub <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。
现在,在 root 用户的家目录中生成了一个 ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsapub 为公钥。
2 在服务器上安装公钥
键入以下命令,在服务器上安装公钥:
[root@host ~]$ cd ssh
[root@host ssh]$ cat id_rsapub >> authorized_keys
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
[root@host ssh]$ chmod 600 authorized_keys
[root@host ssh]$ chmod 700 ~/ssh
3 设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
另外,请留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:
PasswordAuthentication no
最后,重启 SSH 服务:
[root@host ssh]$ service sshd restart
4 将私钥下载到客户端,然后转换为 PuTTY 能使用的格式
使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。
载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。
今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。
1 制作密钥对
在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
[root@host ~]$ ssh-keygen <== 下面是相应的操作提示,以及密钥生成的位置都会告诉我们。
Generating public/private rsa key pairEnter file in which to save the key (/root/ssh/id_rsa): <== 按 EnterCreated directory '/root/ssh'Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空Enter same passphrase again: <== 再输入一遍密钥锁码Your identification has been saved in /root/ssh/id_rsa <== 私钥Your public key has been saved in /root/ssh/id_rsapub <== 公钥The key fingerprint is:0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
在 当前 用户的家目录中生成了一个 ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsapub 为公钥。
2 在服务器上安装公钥
键入以下命令,在服务器上安装公钥:
[root@host ~]$ cd ssh
[root@host ssh]$ cat id_rsapub >> authorized_keys
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
[root@host ssh]$ chmod 600 authorized_keys[root@host ssh]$ chmod 700 ~/ssh
3 设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,添加如下设置:
sudo vi /etc/ssh/sshd_config
RSAAuthentication yesPubkeyAuthentication yes
接着保存后 另外,请留意 root 用户能否通过 SSH 登录:PermitRootLogin yes
当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:
PasswordAuthentication no
最后,重启 SSH 服务:
[root@host ssh]$ service sshd restart
1要登录腾讯云LINUX服务器,需要用SSH软件。例如XSHELL。
2以在东芝L315笔记本电脑为例。系统是WIN
VISTA。
3运行XSHELL软件,点击文件,新建。
4在主机处填写服务器IP地址。
5点击用户身份验证,填写服务器用户名和密码。LINUX服务器默认用户名是root。填好后点击确定。
6在会话对话框中选择刚才创建的服务器,点击连接。
7XSHELL软件会自动进行连接,连接成功后,就成功登录到云服务器了,可以进行安装面板等相应操作。
1 制作密钥对
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
[root@host ~]$ ssh-keygen <== 建立密钥对
Generating public/private rsa key pair
Enter file in which to save the key (/root/ssh/id_rsa): <== 按 Enter
Created directory '/root/ssh'
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/ssh/id_rsa <== 私钥
Your public key has been saved in /root/ssh/id_rsapub <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。
现在,在 root 用户的家目录中生成了一个 ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsapub 为公钥。
2 在服务器上安装公钥
键入以下命令,在服务器上安装公钥:
[root@host ~]$ cd ssh
[root@host ssh]$ cat id_rsapub >> authorized_keys
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
[root@host ssh]$ chmod 600 authorized_keys
[root@host ssh]$ chmod 700 ~/ssh
3 设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
另外,请留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:
PasswordAuthentication no
最后,重启 SSH 服务:
[root@host ssh]$ service sshd restart
4 将私钥下载到客户端,然后转换为 PuTTY 能使用的格式
使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。
载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。
今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。
步骤一:使用ssh-keygen -t rsa 命令创建秘钥对,分别为:id_rsa(私钥文件)和id_rsapub(公钥文件),密钥对保存在(/root/ssh/)中,可以使用(cd ssh/ , ll )查看;
步骤二:执行scp id_rsapub root@192168443:/root (根据自己的主机地址写,这里的ip地址为SSH服务器的IP)命令,将公钥上传到服务端的/root/目录下;
步骤三:把公钥放到某一个用户的authorized_keys中,放到哪个用户下就可以让哪个用户登录。本例中放在root用户下,如果root用户下没有ssh目录,就创建一个。具体指令如下:
mkdir ssh //创建目录
cat id_rsapub //读一下公钥内容
cat id_rsapub 》 sh/authorized_keys //把公钥文件内容追加到authorized_keys中
这样做的目的有利于多个客户端登录,如果单纯把id_rsapub改名为authorized_keys放到ssh中,就只能允许一个客户端登录(服务器一般都是多用户进行管理);到这里基本上SSH密钥对登录就配置完成了,但是为了安全起见,一般还要进行一下的配置
步骤四:由于Linux中有一个强制安全的增强组件SELinux服务,而root创建的authorized_keys的权限默认为644(rw_r__r__),SELinux会认为它不安全强制用户把权限修改为600(rw_______)。
步骤五:SELinux对Linux系统影响太大,对于初学者不太适合,所以可以把它关掉。具体方法如下:
vi /etc/selinux/config //进入selinux的配置文件,把默认的‘SELinux=enforcing’ 修改为‘SELinux=disabled’,然后重启Linux系统。
步骤六:修改服务器端SSH配置文件:
vi /etc/ssh/sshd_config
RSAAuthentication yes 把这行前面的注释号(‘#’)去掉,表示打开RSA验证
PubkeyAuthentication yes 同样把这行的注释号去掉,表示公钥验证打开。
Authorizedkeysfile ssh/authorized_keys 去掉注释号,允许使用公钥验证文件的保存位置。
passwordAuthentication no(默认为yes) 进制使用密码验证登录(可选)
service sshd restart // 重启ssh服务
安装了远程系统资源管理器插件后,已经可以从 Eclipse 中直接登录远程服务器。这里要说的是如何使用现有的密钥或创建一个新的密钥,免口令建立 SSH 连接。这样做的好处是既省事又更安全。
使用现有的密钥
首先,到菜单 Window/Preferences
选择 General/Network Connections/SSH2
在这里,可以指定现有的 SSH2 密钥(必须是OpenSSH的标准)
提示:为了避免出现问题,更改SSH配置后,重新启动Eclipse。
创建一个新的密钥 (Key)
点选密钥管理 (Key Management) 标签窗口,创建一个新的密钥。
点击 Generate RSA Key 按钮,生成一个RSA密钥 。
然后:
添加 comment(inria-gforge-key, 通常可输入:user@host)
输入密码,并确认密码。(连接服务器时需输入一次该密码。如果是专用电脑,可以不设此密码)
复制公共密钥框中的内容,将此公共密钥粘贴到服务器上的 ~/ssh/authorized_keys 文件中去。
点击保存私钥 (Save Private Key) 按钮,把私钥保存在一个文件 id_rsa 中。
这样当再从 Eclipse 登录远程服务器时,就不需要服务器上的用户口令了。
默认配置
Windows下有很多SSH工具。在这里我是用的是Putty。如果安装了Git并配置使用Putty的话,就不需要另外在安装Putty了。使用SSH连接服务器的命令如下:
ssh IP地址1
一般来说为了安全性考虑,端口号等一些参数并不会使用默认值。这样的话命令就变成这样:
ssh 用户名@IP地址 -p 端口号1
如果连接成功的话会提示你输入远程服务器的密码。全部成功之后SSH就会显示远程服务器的提示符,这时候就说明连接成功了。
密钥登录
每次登录SH都需要输入密码很麻烦,而且可能不太安全。SSH还能使用另外一种登录方式,也就是使用密钥登录。这种登录方式需要客户端生成一堆公钥私钥对,然后将公钥添加到服务器中,这样下次就可以直接登录了。
首先生成SSH密钥,依照提示输入信息即可。默认生成在用户主目录中的ssh文件夹中。带pub的是公钥,接下来需要添加到服务器中。
ssh-keygen1
然后将本地公钥添加到服务器中,需要使用另一个命令:
scp -P 端口号 本地文件路径 用户名@远程服务器地址:远程路径1
然后登陆服务器,找到复制进去的公钥,将公钥名字改为authorized_keys并添加到对应的ssh文件夹中。然后退出SSH重新登陆试试,成功的话不需要输入密码就会直接进入远程服务器。
0条评论