大概有如下几个方面:
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@serveridentity_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文件中; 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客户端均可以使用。 |