linux中ssh安全登录

1.修改ssh的配置文件/etc/ssh/sshd_config,把端口号改成一个超过一万的。

2.在服务器上制作密钥对

[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_rsa.pub. <== 公钥
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_rsa.pub 为公钥。

3.在服务器上安装公钥

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

4.设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:

禁止root登录和禁用密码登录的目的是不一样的。

禁用密码登录,是禁止所有的用户通过账号密码的方式进行登录,包括root。解决的是防止暴力破解的问题。

而禁止root登录,是为了限制root用户过高的权限可能造成误操作。

公钥放到哪个用户的家目录,则哪个用户可以通过私钥登录。

如果需要root通过秘钥登录,则只能禁用密码登录,不能禁止root登录。一旦公钥放到root家目录,又禁止了root登录,则无法远程登录服务器。

如果想要通过秘钥登录,又想不让root登录,则新建其他用户,把公钥放到其他用户的家目录,并且同时禁止密码登录和root登录。 

RSAAuthentication yes
PubkeyAuthentication yes

另外,请留意 root 用户能否通过 SSH 登录,默认为yes:
PermitRootLogin yes

当我们完成全部设置并以密钥方式登录成功后,可以禁用密码登录。这里我们先不禁用,先允许密码登陆
PasswordAuthentication yes

最后,重启 SSH 服务:
[root@host .ssh]$ service sshd restart

5.将私钥下载到客户端,登录即可。

SSH的软件包中包括SSH,SCP和SFTP。

如果要登录命令行,则使用ssh2协议,填入服务器IP,SSH指定的端口号,用户名,选择私钥位置,如果有私钥密码的话也需要输入。

如果要在windows和linux间传输数据,则使用winscp,协议选择scp或者sftp都可以。

如果是通过秘钥方式登录。选择私钥后winscp会自动转换为它能识别的.ppk私钥格式。

如果是在两台linux中互传数据,则使用scp命令最简单,也可以使用sftp,都在命令行中操作,具体命令百度一下即可。

原文地址:https://www.cnblogs.com/zhaojianbin/p/9667683.html