Linux安全配置,公钥/私钥方式
2010-02-09 18:04
大概有如下几个方面:
1. 禁止root帐号ssh,使用自定义帐号ssh;
这样一来,黑客要先猜到帐号,然后才能猜解密码;
2. 禁止帐号登录,使用pubkey登录;
3. 作ip ACL,只允许几个特定的IP访问;
4. ssh端口迁移,将默认22端口改为其他端口;
5. 启动尽量少的服务;如无必要,不起服务。

但是测试pubkey的时候,发现了一个问题:使用xshell产生的私钥文件,拿到securecrt使用的时候,不成功!

具体原因,请查看全文的最后一句结论。

 

问题2:一台Linux机器如何使用私钥,ssh另外一台Linux?

命令格式如下:#ssh -i identity_file username@server

 

经过实验发现:xshell产生的私钥文件,在Linux上面可以直接使用,没有问题;使用方法:

# ssh -i identity_file username@server
identity_file为 xshell产生的私钥文件;

经过搜索发现:SecureCRT产生的私钥文件,在Linux上面也是可以使用的;
如果为“标准公钥和VanDyke私钥格式”,那么需要使用ssh-keygen转换一下,然后使用即可;
如果为“OpenSSH密钥格式”,就无需转换,可以直接使用。

也就是说:xshell可以与Linux共享私钥文件(private key file), SecureCRT也可以于Linux共享私钥文件(private key file), 为什么xshell与SecureCRT不可以共享私钥文件呢?

我们将整个过程梳理一遍;
1. SecureCRT生成公钥/私钥对,“OpenSSH密钥格式”,
a. 公钥上传到服务器,导入到/root/.ssh/authorized_keys2文件中;
# cat ./Identify.pub  >> /root/.ssh/authorized_keys2
b. 修改sshd的配置文件;
$ sudo vim /etc/ssh/sshd_config

Protocol 2 /仅允许使用SSH2

PubkeyAuthentication yes /*启用PublicKey认证

AuthorizedKeysFile .ssh/authorized_keys2 /*PublicKey文件路径

PasswordAuthentication no /*禁止密码验证登录

c. 重启sshd服务;

#service sshd restart

d. 测试;

使用SecureCRT登录,ok,没有问题;

将私钥文件Identify给一台Linux客户端,

#ssh -i Identify username@server

同样ok,也没有问题;

提示:Linux客户端中可能会出现提示说,private key file未设保护;

只需要

#chmod 600 Identify

 

2. SecureCRT生成公钥/私钥对,“标准公钥和VanDyke私钥格式”,

a. 公钥上传到服务器,格式转换后,导入到/root/.ssh/authorized_keys3文件中;
# ssh-keygen -i -f /home/guoq/Identity2.pub >> /root/.ssh/authorized_keys3
b. 修改sshd的配置文件;
$ sudo vim /etc/ssh/sshd_config

Protocol 2 /仅允许使用SSH2

PubkeyAuthentication yes /*启用PublicKey认证

AuthorizedKeysFile .ssh/authorized_keys3 /*PublicKey文件路径

PasswordAuthentication no /*禁止密码验证登录

c. 重启sshd服务;

#service sshd restart

d. 测试;

在SecureCRT中建立另外一个Session,登录同样的服务器,只是私钥文件选用Identify2;

退出,

使用SecureCRT的Session登录,失败,因为公钥/私钥已经改变;

使用SecureCRT的Session2登录,ok,没有问题;

将私钥文件Identify2给一台Linux客户端,

#ssh -i Identify2 username@server

输入三次passphrase后,失败。

使用SecureCRT将Identify2转换成为OpenSSH格式后,Linux客户端重试,ok,没有问题;


3. xshell生成公钥私钥对,DSA, openSSH格式,
a. 公钥上传到服务器,导入到/root/.ssh/authorized_keys4文件中;
# cat /home/guoq/id_dsa_1024.pub >> /root/.ssh/authorized_keys4
b. 修改sshd的配置文件;
# vim /etc/ssh/sshd_config

Protocol 2 /仅允许使用SSH2

PubkeyAuthentication yes /*启用PublicKey认证

AuthorizedKeysFile .ssh/authorized_keys4 /*PublicKey文件路径

PasswordAuthentication no /*禁止密码验证登录

c. 重启sshd服务;

#service sshd restart

d. 测试;

使用xshell登录,ok,没有问题;

将私钥文件id_dsa_1024给一台Linux客户端,

#ssh -i id_dsa_1024 username@server

同样ok,也没有问题;

 

4. 将xshell的私钥文件id_dsa_1024给SecureCRT使用;

也同样ok,没有问题;

 

5. 刚才的步骤3中,导出的私钥格式,选择为OpenSSH,这样步骤4就没有问题了;

验证是否导出的私钥格式,选择为"User Key Files(*.pri)", 重复步骤4,果然不可以;

同样的,私钥格式,选择为"*.*", 重复步骤4,也不可以;

 

so. 结论是,如果是OpenSSH格式的私钥文件,那么xshell, SecureCRT, Linux客户端均可以使用。




Logo

更多推荐