SecureCRT通过密钥登录[转]

说明:
一般的密码方式登录容易被密码暴力破解。所以一般我们会将 SSH 的端口设置为默认22以外的端口,或者禁用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_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 为公钥。

2. 在服务器上安装公钥
键入以下命令,在服务器上安装公钥:

[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

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

RSAAuthentication yes
PubkeyAuthentication yes

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

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

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

4. 将私钥下载到客户端,如这里的SecureCRT
输入Hostname,Username,选择认证方式为PublicKey公钥认证,选择刚刚下载下来的id_rsa私钥文件即可!

配置SSH隧道访问Ubuntu服务器上的MongoDB[转]

为了数据安全,在MongoDB的配置文件里,一般会把默认的27017端口port改为自定义的端口号,然后把允许访问的IP设为127.0.0.1(即主机本身)。但是这样就会在开发的过程查看数据时带来麻烦,必须去服务器端或调用部署在服务器的API接口才能很好地可视化地查询数据。为了能在客户端也能使用可视化工具,可以建立一条SSH隧道,直接在客户端访问远程服务器的数据库。

本文例子基于以下开发环境:

服务器端:Ubuntu 16.04 x86_64,MongoDB 3.4.6

客户端:Windows10 x86_64,Robomongo 1.0.0-RC1,PuTTY或XShell

=========================================================================

有两种思路可以建立SSH隧道以实现客户端Robomongo访问服务器MongoDB,一是使用PuTTY或XShell连接服务器时建立隧道,将服务器的MongoDB监听端口映射到客户端的指定端口,这样在客户端使用Robomongo连接本地的指定端口即可访问到服务器的MongoDB端口,缺点是连接数据库前需要保持PuTTY或者XShell处于与数据库的连接状态;二是使用Robomongo自带的建立SSH隧道方式,只需要在Robomongo新建连接,输入建立SSH会话所需的用户名密码或者密钥,相当于使用Robomongo登录到服务器,然后在服务器访问本地的MongoDB端口即可,优势在于不需要单独建立SSH连接(没错这种方法才是推荐使用的,但是第一种就可以不局限于Robomongo的连接)。

=========================================================================

注意:因为SSH隧道是基于TCP Forward建立的,因此,在sshd配置文件里一定要允许TCPForwarding,我开始配置sshd的时候将这个禁用了,所以爬了好久才爬出这个坑。

$ sudo vim /etc/ssh/sshd_config

修改如下字段:

AllowTCPForwarding yes

 

重启sshd

$ sudo systemctl restart sshd

 

 

另外,要把MongoDB的配置文件进行修改,使其仅能通过本地访问:

$ sudo vim /etc/mongod.conf

修改如下字段:

net:

port: 27017

bindIP: 127.0.0.1

 

=========================================================================

一、使用PuTTY或XShell建立客户端与服务器的SSH隧道

PuTTY: 设置好登录信息(包括服务器IP端口用户密码密钥等)后,在左侧栏找到Connection/SSH/Tunnels,Add new forwarded port下,Source Port 填写需要映射到客户端的端口号,Destination填写服务器的主机和端口号(服务器的主机当然是localhost了)下面选Local和Auto即可,然后点击Add,保存以便下次登录方便,点击Open即可建立SSH隧道连接。

然后,打开Robomongo,新建连接到localhost:27018即可连接到服务器的MongoDB了。

或者说,可以通过监听本地的27018端口即可监听到服务器的27017端口。

类似地,使用XShell时,填写好登录主机端口用户名密码密钥等信息后,在左侧栏找到SSH/隧道,添加TCP/IP转移规则类型为Local, 源主机即使客户端的主机及侦听端口,目标则是服务器的主机及端口,确定后连接,即可建立SSH隧道。

=========================================================================

二、使用Robomongo自带的SSH隧道

打开Robomongo,在连接设置里的SSH选项卡中启用SSH tunnel并设置登录SSH服务器的信息,回到Connection选项卡,填入主机(localhost)与服务器上MongoDB对应的端口。保存连接即可。

原文地址:https://www.cnblogs.com/gyjerry/p/7291098.html