首页服务器ssh远程连接服务器,如何使用SSH登录远程服务器

ssh远程连接服务器,如何使用SSH登录远程服务器

编程之家2023-10-24111次浏览

大家好,如果您还对ssh远程连接服务器不太了解,没有关系,今天就由本站为大家分享ssh远程连接服务器的知识,包括如何使用SSH登录远程服务器的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

ssh远程连接服务器,如何使用SSH登录远程服务器

如何使用SSH登录远程服务器

你好,

默认配置

Windows下有很多SSH工具。在这里我是用的是Putty。如果安装了Git并配置使用Putty的话,就不需要另外在安装Putty了。使用SSH连接服务器的命令如下:

ssh IP地址

一般来说为了安全性考虑,端口号等一些参数并不会使用默认值。这样的话命令就变成这样:

ssh用户名@IP地址-p端口号

ssh远程连接服务器,如何使用SSH登录远程服务器

如果连接成功的话会提示你输入远程服务器的密码。全部成功之后SSH就会显示远程服务器的提示符,这时候就说明连接成功了。

密钥登录

每次登录SH都需要输入密码很麻烦,而且可能不太安全。SSH还能使用另外一种登录方式,也就是使用密钥登录。这种登录方式需要客户端生成一堆公钥私钥对,然后将公钥添加到服务器中,这样下次就可以直接登录了。

首先生成SSH密钥,依照提示输入信息即可。默认生成在用户主目录中的.ssh文件夹中。带pub的是公钥,接下来需要添加到服务器中。

ssh-keygen

然后将本地公钥添加到服务器中,需要使用另一个命令:

ssh远程连接服务器,如何使用SSH登录远程服务器

scp-P端口号本地文件路径用户名@远程服务器地址:远程路径

然后登陆服务器,找到复制进去的公钥,将公钥名字改为authorized_keys并添加到对应的.ssh文件夹中。然后退出SSH重新登陆试试,成功的话不需要输入密码就会直接进入远程服务器。

请教如何用ssh连接远程服务器

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

①文字接口的明文传输: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 5.X之后默认SSH协议版本都是V2也就是上图的【Protocol 2】,默认端口是 22,注意这些还不够,如果是真正工作中的服务器,建议取消root的登录权限:

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

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

方法如下:

①客户端建立两把钥匙

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

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

命令如下:

需要注意:

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

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

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

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

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

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

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

ssh远程连接服务器执行命令

首先说一下使用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远程执行命令找不到环境变量的问题

关于ssh远程连接服务器到此分享完毕,希望能帮助到您。

获取服务器列表失败?传奇私服获取服务器列表失败。要怎么弄啊服务器安全卫士 服务器到底该不该装360安全卫士