ssh客户端

ssh客户端

ssh,配置文件:/etc/ssh/ssh_config

在配置文件/etc/ssh/ssh_config中Strict HostKey Checking no 首次登录不显示检查提示。

格式:ssh [[email protected]]host IP地址 [command]

ssh [-l user]host IP地址 [command]

(如果不指定用户,你是哪个用户就连接哪个用户上,后面还可跟命令)

?

Ssh客户端允许实现对远程系统经验证地加密安全访问

当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub(CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接

?

下面来看一下ssh的一些选项:

-p port端口号:远程服务器监听的端口

例如:ssh 192.168.10.178 -p 2222 如果将服务器的端口改为2222,再用ssh连接不指定端口(默认是22端口),此时就无法连接,连接时指定端口号就可以连接了。

改端口号:semanage port -a -t ssh_port_t -p tcp 端口号 (如果启用了SELinux策略,改的端口号为非标准端口号,违反了SELinux策略,直接修改配置文件是不可以的,要用这种方法去修改,记得改完之后重启一下sshd服务)

-b 指定源IP来连接服务器

-v:调试模式(连接的时候发现一些错误,可以用-v来排错)

-C:压缩方式

-X: 支持x11转发

xclock命令在centos6上面可以打开小钟表,在centos7上面打不开,现在我用centso7去连接centos6,直接连接上去,执行xclock命令是打不开小钟表的,需要价格-X选项,才能打开

-Y:支持信任x11转发

ForwardX11Trusted yes

-t: 强制伪tty分配

?

小实验:

如图:假如企业内部有两台机器B,C,其中C是ssh service ,企业内部连接互联网是通过防火墙来连接的,只有B才能连接到C,A不能直接连接C,假如A出差了,在企业外部,现在A想要连接C,怎样连接呢?A可以连接到B,通过B这个跳板再来连接到C ssh -t B(ip地址) ssh C(ip地址)

?

?

实验环境:有3台机器A,B,C,这3台机器都在一个网段中。

1)先在C机器上制定防火墙策略,拒绝A机器连接iptables -A INPUT -s 192.168.10.136 -j REJECT

这样A就不能直接连接C了,,B可以连接C,A可以连接B,所以B可以做跳板,让A借助B来连接C

2)ssh -t 192.168.10.135 ssh 192.168.10.178 这样就能连接了,需要输入两次密码

?

常见的ssh连接问题

在用ssh连接的时候我们会遇到一些问题,接下来介绍一下这些问题和解决这些问题的方案

(1)解决ssh连接较慢的方案

我们在用ssh连接的时候可能会非常慢,可以调整服务器端的配置文件,修改以下两项,重启服务,就能生效,再重启sshd服务,之后再用ssh连接就非常快了

vim /etc/ssh/sshd_config 编辑服务器端的配置文件

?

然后systemctl restart sshd.service(centos7)或service sshd restart(centos6),重启一下sshd服务,就可以了

(2)去掉ssh第一次连接服务器提示的yes or no?

当某台机器第一次去连接某服务器时,会问你是否要继续连接,yes or no?,敲了yes就会在家目录下的.ssh目录下生成了一个known_hosts文件,这个文件就记录了你所连接的每一台服务器的公钥key(如下图我目前只连接了一个服务器,所以只有一个服务器的公钥key)

下面就来修改配置文件来解决这个问题

vim /etc/ssh/sshd_config

将该项改为no,第一次连接不用提示yes或者no

?

(3)/etc/ssh中的key不能被破坏

ssh中的key不能被破坏,如果这些key都被删了,ssh服务不能被启动

先关闭了sshd服务,再开启sshd服务,然后就发现启动失败

再把/app/下的key移回来就可以启动成功了。

?

ssh服务登录验证方式

1.用户/口令

2.基于密钥

1.基于用户名口令登录验证

基于用户和口令登录验证(客户端用服务器的公钥加密密码,再发给服务器,服务器再拿私钥解开密码,验证密码是否正确)

1)客户端发起ssh请求,服务器会把自己的公钥发送给用户

2)用户会根据服务器发来的公钥对密码进行加密

3)加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

2.基于密钥的登录方式

1)首先在客户端生成一对密钥(ssh-keygen)

2)并将客户端的公钥ssh-copy-id 拷贝到服务端

3)当客户端再次发送一个连接请求,包括ip、用户名

4)服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:acdf

5)服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

6)得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

7)服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

基于密钥的认证:

1)在客户端生成密钥对 ssh-keygen -t rsa -P ‘‘ -f /root/.ssh/id_rsa

-t 指定算法 (默认是rsa算法) -P指定私钥的口令,什么都不写就是生成的私钥没有口令 -f 指定私钥文件路径(默认是/root/.ssh/id_rsa)

2)把公钥文件传输至远程服务器对应用户的家目录 ssh-copy-id -i /root/.ssh/id_rsa 192.168.10.107

ssh-copy -i /root/.ssh/id_rsa 192.168.10.107 该命令看似传输的是私钥,其实传输的是公钥,我们来看一下公私钥是什么样的

如下图:我们看到公私钥的内容

?

在服务器上的家目录下查看一下authorized_keys这个文件是否生成

再来查看一下这个文件authorized_keys

对比一下上面的公私钥的内容,可以发现传输的确实是公钥

3)测试

好了,现在我们开始连接服务器了,如下图,发现直接就能连接上去了,不用输密码

4)在SecureCRT或Xshell实现基于key验证

在SecureCRT工具—>创建公钥—>生成Identity.pub文件

转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600,在需登录的ssh主机上执行:

ssh-keygen-i-f Identity.pub >> .ssh/authorized_keys

5)重设私钥口令:ssh-keygen –p

如果你觉得你的口令不安全,就可以重设私钥口令,我们上面就没有对私钥设口令,这是很不安全的,下面我就给私钥重设口令,如下图,我们可以发现重设私钥密码后,再去连接服务器,就不会那么容易了,需要你输入设定的私钥密码

6)验证代理(authentication agent)保密解密后的密钥

?这样口令就只需要输入一次

?在GNOME中,代理被自动提供给root用户

?否则运行ssh-agent bash

7)钥匙通过命令添加给代理

ssh-add

第六步和第七步合在一起用,我们在管理多台服务器时,你要一个一个的连接,一个一个的输密码,连接上去,这样十分麻烦的,而且效率低下,我们可以基于秘钥登陆的方式,来连接多台服务器,这样你在连接多台服务器时,就不用一个一个的输入每一台服务器的密码了,你只需记住一个私钥密码,连接的时候输入私钥密码,就可以连接多台服务器了,如果你连私钥密码都懒得输入,就可以将第六步和第七步结合在一起使用,如下图,先验证代理,再把私钥密码托管给代理,这样你再去连接其他服务器就不用输入私钥密码了

?

scp命令–走ssh端口的远程复制命令

scp[options] SRC... DEST/ 源可以有多个

两种方式:可以将远程主机的文件拷到本机上,也可以将本机的文件拷到远程主机

scp[options] [[email protected]]host:/sourcefile /destpath

scp 192.168.10.178:/app/testdir/ /app/linshi

scp[options] /sourcefile [[email protected]]host:/destpath

scp /app/linshi 192.168.10.178:/app/testdir

常用选项:

-C:压缩数据流

-r:递归复制

-p:保持原文件的属性信息

-q:静默模式

-P port:指明remote host 的监听的端口

rsync命令–更聪明的复制

基于ssh和rsh服务实现高效率的远程系统之间复制文件

使用安全的shell连接做为传输方式

?rsync –av/etc server1:/tmp复制目录和目录下文件

?rsync –av/etc/ server1:/tmp只复制目录下文件

如下图:testdir后面不加/,复制testdir目录和目录下文件,加/,只复制testdir目录下的文件,testdir目录文身不复制

比scp更快,只复制不同的文件,若只是想更新变化了的文件,就用rsync

选项:

-n 模拟复制过程(并不真实去复制,只是演示一下复制过程)

-v 显示详细过程

-r 递归复制目录树

-p 保留权限

-t 保留时间戳

-g 保留组信息

-o 保留所有者信息

-l 将软链接文件本身进行复制(默认)

-L 将软链接文件指向的文件复制

-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)

?

好了就,今天的内容就到这里,希望对大家能有所帮助

?

?

?

?

?

?

?

?

?

时间: 2024-10-31 08:25:49

ssh客户端的相关文章

关于Mac下的SSH客户端iterm2等配置

linux后台开发的同学们晓得,在windows下有xshell\securecrt这样优秀的ssh客户端软件.mac下查找了下,有securecrt mac版,网上也有破解的,试用了一段时间,一个问题始终没有能解决——ssh链接偶尔会断掉.关于这个问题,先说下leby的工作环境吧:我们是不能直接ssh目标主机的,必须用ssh代理中转,于是搭建了一个HTTP的proxy,这之前在windows下xshell工作很好.在mac的scrt下,总是会随机掉线,一些超时配置当然是试过的,不能解决问题.

windows 下ssh 客户端

今天用 xshell 和 bitvise ssh 在 windows 登录SSH ,发现 vi 一些中文内容的文件会出现乱码,配置无效,在网上找到一款不会中文乱码的SSH客户端 MobaXterm ,刚用了下,功能非常多,界面也很友好,同时支持windows cmd 命令和Linux命令.Mark 一下. 下载地址:http://pan.baidu.com/s/1pJP9ZKZ 官网:http://mobaxterm.mobatek.net/download.html

解决linux ssh客户端SSH连接linux服务器很慢的问题

在linux上使用ssh客户端连接另一台的linux服务器时,出现了连接慢的情况.但是换一台客户端去连发现速度正常.推测ssh客户端出现为问题. 于是使用使用ssh -v  IP 调试,果然发现问题.输出如下: [[email protected] ~]# ssh -v 10.60.9.32 OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuration data /etc/ssh/ssh_config d

Linux-vim与ssh客户端

一.vim使用 Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器. (1)vim安装 (2)vim使用:操作模式  一般模式(默认模式,不能编辑文档,只能查看,按i进入编辑模式)  编辑模式(该模式可以编辑文本,按esc退出,进入到一般模式)  命令模式(在一般模式中按:进入命令模式)  -q:安全退出   -q!:强制退出  -wq:保存退出   -set number:为编辑文本设置行数   -set nonumber:取消行数设

smileShell 一个 ssh客户端工具

小弟心血来潮开发一个ssh客户端工具 http://www.nisonge.cn/detail/blog_id/1 请大家多多指点.

好用的SSH客户端 good SSH client recommended

对于经常性地要登录服务器的同志们,选择一款优秀的SSH客户端非常有必要,不仅可以提高效率,而且赏心悦目,宅的几率更大. 呵呵,我就是i一枚. 很出名的就是PuTTY(Windows,Linux都有的), Secure SSH client,一搜一大片,各种介绍的.此外还有各种基于这两个的优化 版本,但是问题是这样的,PuTTY的默认设置很难看,保存配置,....,反正就是感觉不对,虽然用了好久,还是决定更换,看大家都说 Secure SSH client还不错,下载试了一下,丑的要死,没有一种T

chrome的ssh客户端插件-- secure shell

试用了一下,非常强大. 与firessh比较下(虽然现在的版本已经支持chrome安装) 还是比较喜欢它, firessh是独立窗口不太喜欢.还有配置现在太少.虽然这个可以自己改动一下实现. 有兴趣的可以放弃其它客户端了.上传文件这块,当然不行了. chrome的ssh客户端插件-- secure shell,布布扣,bubuko.com

ssh客户端CRT连接linux使用技巧

设置仿真和回滚缓冲区 字体外观设置 日志文件设置 ssh客户端实现和linux共享文件 linux安装支持软件 yum install lrzsz –y #给linux安装上传下载支持软件 CRT设置上传和下载的路径 上传 rz –y:接-y表示覆盖已有文件,不能是目录.默认上传到当前路径下.输入命令回车会弹出选择文件的窗口,如下: 下载 sz –y test.txt:-y表示覆盖下载.后边接文件名. 默认下载到刚才设置的下载路径. 批量管理linux会话

自己制作SSH客户端:二、叩响大门

现在基于上面制作的SocketClient可以进行各种Socket协议的收发操作.但是要注意,缓冲区大小有可能会造成的粘包问题. 我们开始连接服务器的ssh服务 ClientSocket client = new ClientSocket(socket); client.setClientListener(listener); client.start(); ssh = new SSH(client.getName()); 可以看到我们这里已经实现了一个ClientListener的接口回调,这

ssh客户端使用技巧

在linux下使用ssh连接服务器的时候,有没有感觉到下面的不方便: ssh连接在一段时间没有使用时,出现假死,并前导致当前终端都不能用,只能Kill掉: 即使在内网环境下,每次建立ssh连接都需要花费好长时间,如5s以上: 在已经连接到服务器A时,想再打开一个到服务器A的连接又要再次等待.输入密码,没有Windows下类似工具可以直接复制一个当前连接那么方便: 当从外网,通过跳板,连接到一个内网服务器时,需要经过多次ssh跳转,这种情况在拷贝文件时尤显不便. 其实这些问题,并非ssh本身的缺陷