CentOS服务器端配置SSH远程连接的教程

CentOS服务器端配置SSH远程连接的教程,第1张

安装好了CentOS 64,我想让它作为一个服务器,可以让我的Windows 7电脑远程登录。

安装OpenSSH Server

首先,我们搜索一下CentOS的软件库里面有没有已经定义好的SSH服务器包:

代码如下:

$ yum search ssh

opensshx86_64 : An open source implementation of SSH protocol versions 1 and 2

openssh-askpassx86_64 : A passphrase dialog for OpenSSH and X

openssh-clientsx86_64 : An open source SSH client applications

openssh-ldapx86_64 : A LDAP support for open source SSH server daemon

openssh-serverx86_64 : An open source SSH server daemon

OpenSSH是Secure Shell的一个开源实现。从上面的搜索结果可以看到,CentOS的软件库里面已经有了OpenSSH的服务器包(openssh-server)和客户端包(openssh-clients),用yum install可以直接安装。

代码如下:

$ yum install openssh-server

OpenSSH Server安装完成后在/etc/initd目录下应该会增加一个名为sshd的服务。

代码如下:

$ chkconfig list sshd

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

手动启动sshd服务,方便后面客户端的连接:

关闭:

代码如下:

/etc/initd/sshd stop

启动:

代码如下:

/etc/initd/sshd start

重启:

代码如下:

/etc/initd/sshd restart

运行

1、重启后生效

开启:

代码如下:

chkconfig sshd on

关闭:

代码如下:

chkconfig sshd off

2、即时生效,重启后失效

开启:

代码如下:

service sshd start

关闭:

代码如下:

service sshd stop

PS:CentOS中SSH连接中文乱码问题的解决

CentOS 6 ,在SSH时回显中文乱码,则:

修改 /etc/sysconfig/i18n 文件

命令

代码如下:

vi /etc/sysconfig/i18n

将里面的文字 最终修改为:

代码如下:

LANG="zh_CNGB18030"

LANGUAGE="zh_CNGB18030:zh_CNGB2312:zh_CN"

SUPPORTED="zh_CNUTF-8:zh_CN:zh:en_USUTF-8:en_US:en"

SYSFONT="lat0-sun16"

最后,断开重连SSH就可以了,进入用date命令既可查看效果

MAC 是自带SSH的,可以使用whereis查看是否存在,在终端执行下面的命令:

执行完后会打印存在路径

之后查看现有进程,执行下列命令:

执行完后会打印现有进程,但是你会发现找不到ssh对应的进程

下列为我的终端执行命令后的结果

这时候如果直接使用SSH命令连接本地主机或者远程主机会遇到下列错误:

解决方法:打开系统偏好设置,在共享中,打开远程登录,如下图:

之后使用ssh localhost来测试一下,如果提示输入密码来认证就没问题了。

之后再grep一下进程就可以看到ssh进程在运行了:

可以通过ssh命令连接其他主机,例如:

ssh username@192168100100

也可以通过ssh命令连接其他服务器,例如:ssh -p 端口 用户名@服务器ip地址

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

① 文字接口的明文传输: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

首先说一下使用ssh远程连接服务器执行命令的方法:

为了方便描述,这里把测试服务器称之为A1,目标服务器称之为A2

如果可以直接登录到A2,则配置成功!

下面来说问题:

ssh在远程连接服务器执行命令的时候,经常会遇到环境变量的问题,如下:

如果出现上面的提示,则说明环境变量配置有问题。

先来说解决办法

问题解决!

这里就要说明bash有两种方式interactive + login shell模式和non-interactive + non-login shell模式

在服务器上执行命令,走的是interactive + login shell模式,而通过远程登录执行命令,走的是non-interactive + non-login shell模式。

这两种模式对于环境变量的读取是有区别的。

Shell首先会加载/etc/profile文件,然后再尝试依次去加载下列三个配置文件之一,一旦找到其中一个便不再接着寻找:

~/bash_profile

~/bash_login

~/profile

所以当远程执行命令时,我们只需要让~/bashrc文件中的环境变量与/etc/profile中的环境变量一致即可!

参考:

如何解决SSH远程执行命令找不到环境变量的问题

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » CentOS服务器端配置SSH远程连接的教程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情