如何使用ssh登录linux服务器

如何使用ssh登录linux服务器,第1张

实现此的技术原理:

在内网通过域名绑定服务器,外网SSH访问连接时,通过域名的访问,实现访问内网LINUX。

具体的实现过程如下:

明确LINUX服务器内网访问地址端口,确保LINUX服务器正常开启SSH服务,在内网SSH可以正常访问连接。如图所示:

被访问端的Linux主机上使用nat123动态域名解析Linux版本。

在被访问端的Linux服务器安装nat123客户端,并登录使用它。

登录网页,左侧用户中心,添加域名解析,选择动态域名解析并添加确认。

选择动态域名解析记录,使用二级域名,或自己的域名。鼠标放在输入框有向导提示。如不理解负载均衡,不要勾选多点登录。

新添加动态解析后,等待几分钟生效。解析生效后,动态解析域名与本地公网IP是保持对应的。可以通过ping下域名核实,返回结果IP地址为本地公网IP地址时,表示动态解析生效正常。

路由器端口映射,路由映射SSH访问22端口。

因为公网IP是在路由器上的,外网访问时,需要经过路由,需要在路由器上做端口映射,将内网LINUX服务器访问22端口打通。路由器端口映射位置:转发规则/虚拟服务器/添加允许外网访问端口和协议。我的LINUX服务器SSH服务端口是默认的22,我内网对应LINUX服务器主机的内网IP地址是192168129。

外网访问时,使用动态解析域名。

在外网使用SSH访问内网LINUX服务器时,使用动态解析域名进行连接访问。域名是不变的,可以上网即可访问,再也不担心动态公网IP变化的问题。

在linux命令中登陆ssh服务的命令是ssh ip。例如:

ssh 19218612

之后需要输入账号和密码就可以登陆到linux服务器中了。

ssh登陆linux服务器的默认端口是22,也就是ssh 19218612 22,22通常可以省去,如果设置了其他端口,则不能省略。

扩展资料

1、SSH连接原理

ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。

ssh服务端由2部分组成: openssh(提供ssh服务)    openssl(提供加密的程序);

ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接。

2、SSH的工作机制

服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址;

确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。    

目前,远程连接服务器的类型有以下几种: 

① 文字接口的明文传输:Telnet、RSH为主,很少用到。 

② 文字接口的加密传输:以SSH为主,已经取代了上面的明文传输方式。 

③ 图形接口:XDMCP、VNC、XRDP等较为常见。 

这篇文章只为实战,不为普及概念性知识。所以我只讲解在工作中最常用到的技术SSH。关于SFTP技术和VNC技术,请查阅我的其他博客。 

好,先来看一下SSH的相关技术: 

SSH,英文全程是Secure Shell Protocol(安全的壳程序协议)。SSH是现在公司基本上都在使用的一种文字接口的加密传输技术,采用的是非对称秘钥系统。

对于SSH的原理,你们可以参考我的另外一篇博客,我把链接贴在这里: 

SSH原理

⑴来吧,我们先来查看一下sshd这个服务(这就是SSH的远程连接必须开启的服务,属于系统自带),注意,一般这个sshd服务是默认自动开启的。

如果想要重启怎么办呢? 

好吧,请看:

上面两种重启动的方法都是可以滴!

⑵直接远程登录主机的命令: 

ssh -f -o 参数 -p 非标准端口 账号@IP 命令 

其中: 

-f : 需要配合后面的命令,不登录远程主机直接发送一个命令过去 

-o 参数 : 主要的参数有: 

ConnectTimeout=秒数 : 连接等待的秒数,减少等待的时间。 

StrictHostKeyChecking=yes|no|ask:默认是ask,若要让public key主动加入到known_hosts, 则可以设置为no即可。 

-p : 如果sshd服务启动在非标准端口下,需使用此参数。

举例说明吧: 

① 直接登录到对方主机: 

如果是以root用户登录到对方主机,有如下两种登录方式:

注意:如果是普通用户登录,必须使用第二种加@的方式。

② 实现登录对方主机,执行命令后就离开的方式。例如:从远程主机上执行cat /etc/passwd命令把文件显示在本地主机上。

③ 不登录对方主机,让对方主机自己运行该命令,你立刻回到本地机器继续工作:

④ 删除known_hosts后,重新使用root连接到本机,会自动加上公钥记录

你一定会说,大骗子玩漏了吧?怎么没有自动加上公钥记录呢?怎么记录信息提示手机选择yes/no了呢?别着急,我们的“-o”参数要横空出世了!有了-o,再也不用选择yes|no了,而是自动被选择了yes而加入到~/ssh/known_hosts中。

看到了,这次没有提示让选择yes|no吧! 

⑤ SSHD服务器详细配置

Centos默认的SSHD服务其实已经算是很安全了,这里注意Centos 5X之后默认SSH协议版本都是V2也就是上图的Protocol 2,默认端口是 22,注意这些还不够,如果是真正工作中的服务器,建议取消root的登录权限:

把红框中的yes改为no就可以取消root用户的登录权限了。

下面来介绍一个很有用的技术,制作不用密码可立即登录的SSH用户。有人会说制作这个是用来干嘛的?你想一想,如果想要利用crontab来定时执行备份或者拷贝的任务,因为每次SSH连接都要输入对方主机密码,这是在crontab中无法执行的,那么怎么办?只有不需要输入密码才可以操作。 

方法如下: 

① 客户端建立两把钥匙 

我们在客户端创建一个用户user1操作,利用user1来远程服务器端的user2用户。下面我们以1921681118为客户端,以1921681121为服务端。 

首先在客户端建立两把秘钥 

命令如下:

需要注意: 

⑴ ~/ssh目录的权限必须是700 

⑵ id_rsa(私钥文件)的权限必须是-rw——-,且属主必须是当前登录用户,否则在未来秘钥比对的过程中,可能会被判断为危险而无法成功的以公私钥成对的机制来实现连接。 

以上两点一般情况下默认都是正确的。

② 将公钥文件数据上传至服务器端

③ 将公钥文件放置到服务器端的正确目录中,并保证文件名正确 

一定要把公钥文件内容附加到authorized_keys这个文件内,操作用户为服务器端用户

注意:切记authorized_keys这个文件的权限必须是644

安装了远程系统资源管理器插件后,已经可以从 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 登录远程服务器时,就不需要服务器上的用户口令了。

1创建用户abc ,主目录为/home/abc

2用root用户建立目录 /var/chroot , /var/chroot/lib, /var/chroot/bin,/var/chroot/etc,/var/chroot/home/abc

3 把/lib 下 libcso6,ld-linuxso2,libdlso2,libtermcapso2(为ldd /bin/bash的结果) 拷贝到 /var/chroot/lib下

4把bash文件拷贝到/var/chroot/bin下

5chown abc /var/chroot/home/abc

6 tail -1 /etc/passwd >;/var/chroot/etc/passwd

7 修改/etc/pamd/sshd 在末尾加上一句

session required pam_chrootso

8修改/etc/security/chrootconf

增加 一行 abc /var/chroot 保存

9使用abc 通过ssh 登录即可

1终端命令

1打开Mac的命令终端,检查是不是用root登陆,如果不是的话,就输入命令:sudo -i切换到root

2输入ssh root@127001 它会提示你输入密码,输入正确的密码之后,你就发现已经登陆成功了

1 ssh简介以及本例的应用场景

① ssh的简介

SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。 SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

② 本例的应用场景

用户在client(Linux)上通过ssh远程执行server(Windows)上的命令,比如c:\testbat

注:Linux版自带ssh Server且默认启动,具体设置方法请参见google。

2 ssh服务器的安装(Windows)

ssh服务器软件有许多中,我们这里使用的是免费的freeSSHd。

① 首先从官方站点下载软件并安装(http://wwwfreesshdcom/)

② 安装完成后进入配置界面(Server Status),确认SSH server正在运行状态

③ 进入Users界面,设定一个访问的用户账户(比如xut)

这里我们建立一个叫xut的用户,认证有3种方式可以选择。从以后通过ssh运行命令的方便(无需输入密码)考虑,我们选择Public key认证方式。选择Password方式的话,每次访问需要输入密码,此种方式较为繁琐而且安全性不高。然后开放其Shell权限。

④ 进入认证界面,确认Public key认证方式属于激活状态(选择Allowed或Required)

此时ssh服务器端的基本设置已经OK,可进一步进行更加详细的设置(比如访问限定等),此处不再介绍。

注意:服务器端如果有防护墙时应该开发TCP 22号端口最为ssh连接使用。

3 ssh客户端的设置(Linux)

由于我们的客户端采用的是Linux,所以不用安装客户端软件,系统自带的就有。

我们需要在Linux上创建一个共有和私有的密钥对,私有密钥放到客户端(Linux)上,共有密钥放到服务器端(Windows)上。在Linux上通过ssh-keygen命令来创建。

[root@localhost ~]# ssh-keygen -t rsa

Generating public/private rsa key pair

Enter file in which to save the key (/root/ssh/id_rsa): [直接回车]

Enter passphrase (empty for no passphrase): [直接回车]

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:

4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53

其中,/root/ssh/id_rsa为私有密钥,/root/ssh/id_rsapub为共有的密钥。

此时,需要把共有密钥放到服务器端(Windows)进行保存,以便于服务器端进行安全检查。

我们通过认证界面找到存放共有密钥的地址(Public key folder)。

如上图所示,然后在c:\Program Files\freeSSHd目录下创建以登录用户名为名字的文本文件,此处举例为xut文件。并将/root/ssh/id_rsapub文件中的内容拷贝到c:\Program Files\freeSSHd\xut文件中。

至此,客户端和服务器端的密钥设置已经完成,可以通过如下命令进行远程的命令执行。

ssh xut@17228xxxxx "c:\testbat"

这条命令将执行服务器端的C盘下的testbat文件,并把结果返回,整个操作不需输入密码。

4 ssh客户端的设置(Windows)

由于Windows不附带ssh的客户端和服务器端,我们这里找一个免费的客户端软件PuTTY。

PuttY主页:http://wwwchiarkgreenendorguk/~sgtatham/putty/

各种客户端的比较:http://enwikipediaorg/wiki/Comparison_of_SSH_clients

在Putty主页,我们下载puttyzip(含除了PuTTYtel以外的所有文件),然后解压会发现一个叫plinkexe的文件,这就是我们的ssh客户端命令行软件。

我们首先要成一个共有和私有的密钥对,使用puttyzip中附带的PUTTYGENexe生成。

启动PUTTYGENexe后可以见到下图界面,点击[Generate]即可生成所需密钥对。

注意:由于是采用随机算法生成,需要不停地在对话框上移动鼠标进度条才会增加,否则将保持不变。

鼠标在这里不停移动

密钥生成完毕后,可以把私有密钥进行保存,为了登录简单起见不对私钥进行加密,提示没有passphrase选择忽略即可。假设我们这里把私钥保存为pri_keyppk。

我们把公钥放在freeSSHd端(ssh服务器端)进行保存,具体保存方法参见ssh客户端的设置(Linux)。

在Windows客户端,执行如下命令进行ssh连接,并不需要输入密码即可通过密钥进行自动认证。

plink -i pri_keyppk xut@17228xxxxx c:\testbat

(此时将执行服务器端的c:\testbat脚本。)

注:第一次连接时将出现“The server's host key is not cached in the registry…

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何使用ssh登录linux服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情