如何通过ssh登录服务器执行linux指令

如何通过ssh登录服务器执行linux指令,第1张

介绍如何在windows主机上通过ssh远程登录ubuntu操作系统,这里以虚拟机的操作系统为例讲解。方法/步骤

准备工作:首先需要在windows系统中安装虚拟机,并在虚拟机中安装好linux操作系统,这里安装的是vmware player虚拟机和ubuntu版本的操作系统。关于该部分的安装在作者的其他经验中有详细介绍。

在windows主机中安装上ssh软件,ssh是Secure Shell 的缩写,主要提供远程登录协议。windows下的安装很简单,只要下载好安装程序,双击即可安装。安装完成后会生成两个软件图标。

在ubuntu系统中安装ssh,通常ubuntu中默认是安装的。可以通过命令进行查看:dpkg -l | grep ssh

如果ubuntu系统中没有安装ssh程序,也可以使用下列命令进行安装:

sudo apt-get install openssh-client

sudo apt-get install openssh-server

安装好后ssh服务的启动和停止命令如下:

启动ssh服务:

#sudo /etc/initd/ssh start

停止ssh服务:

#sudo /etc/initd/ssh stop

重启ssh服务:

#sudo /etc/initd/ssh restart

通过虚拟机启动ubuntu系统,打开shell终端,通过ifconfig命令,查看该系统的ip地址,ssh的端口号一般为22

打开windows系统中的ssh客户端软件,选择快速连接,输入ubuntu系统的ip地址和账户名,并根据提示输入密码,即可通过ssh登录到ubuntu系统中去,并执行各种命令操作。

首先,你的linux服务器要有ssh服务(如openssh),防火墙iptable必须要开放ssh端口,ssh有配置文件,配置权限与用户,ssh端口等信息,这个内容比较繁多,不一一列出。

客户端的话安装例如puttu,securecrt这类的终端软件,正确输入服务器的ip地址或者能够被解析到的域名,正确的ssh端口,连接后输入具有ssh远程访问权限的用户账号与密码,就能够通过ssh登录到远程linux服务器了。

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

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

也可以新建用户名用于ssh 传输

1查询是否安装了openssh

rpm -qa

|grep openssh

若没有则安装

2启动ssh服务

service sshd

start

/etc/rcd/initd/sshd

start

3开机启动ssh

chkconfig --add sshd

chkconfig --level 345 sshd on

4root@192168110是本地机向远程root@19216818传输文件

root@192168110下 执行

ssh-keygen -t rsa

则在/root/ssh/文件夹下生成 id_rsa、id_rsapub两个文件

过程如下

Generating public/private rsa

key pair

Enter file in which to save the

key (/home/username/ssh/id_rsa):#回车

Enter passphrase (empty for no

passphrase):#回车

Enter same passphrase

again:#回车

Your identification has been

saved in /home/username /ssh/id_rsa

Your public key has been saved

in /home/username /ssh/id_rsapub

The key fingerprint is:

38:25:c1:4d:5d:d3:89:bb:46:67:bf:52:af:c3:17:0c

username@localhost

Generating RSA keys:

Key generation complete

5

把192168110上的id_rsapub拷贝到19216818下且重命名为authorized_keys

mkdir

/root/ssh

有时需要新建文件夹

/root/ssh/

变更属性 chmod

644 ssh/authorized_keys

形如:/root/ssh/authorized_keys

6

从本地192168110拷贝文件到远程服务器19216818

scp

/root/installlog root@19216818:/usr/local/src

可以用通配符拷贝

scp

/root/install root@19216818:/usr/local/src

拷入的文件有installlog、installlogsyslog

命令有

三,复制文件或目录命令:

复制文件:

(1)将本地文件拷贝到远程

scp

文件名用户名@计算机IP或者计算机名称:远程路径

本地19216818客户端

scp /root/install root@192168112:/usr/local/src

(2)从远程将文件拷回本地

scp

用户名@计算机IP或者计算机名称:文件名本地路径

本地19216818客户端取远程服务器12、11上的文件

scp root@192168112:/usr/local/src/log

/root/

scp root@192168111:/usr/local/src/log

/root/

复制目录:

(1)将本地目录拷贝到远程

scp -r

目录名用户名@计算机IP或者计算机名称:远程路径

(2)从远程将目录拷回本地

scp -r

用户名@计算机IP或者计算机名称:目录名本地路径

7 当本地客户端 取其他多台服务器中的文件

本地19216818客户端

adduser sshuser

passwd sshuser

usermod -G root sshuser 把用户加入root组

生成密钥

ssh-keygen -t rsa

密钥位置在

/home/sshuser/ssh/id_rsapub

远程获取文件

scp sshuser@192168111:/usr/local/src/log

/home/sshuser

scp sshuser@192168112:/usr/local/src/log

/home/sshuser

a11log a12log 文件会获取到 /home/sshuser文件夹下

注意事项:

从远程取文件的地址,和放入本地的地址。权限一定要属于root组或者sshuser用户

chown -R sshuserroot /home/sshuser

拥有者。群组

远程192168111服务器

adduser sshuser

passwd sshuser

usermod -G root sshuser

进入

/home/sshuser/

建立ssh目录

mkdir /home/sshuser/ssh

19216818的公钥(id_rsapub)拷入并重命名为authorized_keys

在/usr/local/src/中建立 a11log文件

远程192168112服务器

adduser sshuser

passwd sshuser

usermod -G root sshuser

进入

/home/sshuser/

建立ssh目录

mkdir /home/sshuser/ssh

19216818的公钥(id_rsapub)拷入并重命名为authorized_keys

在/usr/local/src/中建立 a12log文件

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

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情