一 : Linux下定制SSH来简化远程访问的方法
SSH 使用系统全局以及用户指定(用户自定义)的配置文件。在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过特定的选项来连接到远程主机。
SSH (指 SSH 客户端)是一个用于访问远程主机的程序,它使得用户能够 在远程主机上执行命令。这是在登录远程主机中的最受推崇的方法之一,因为其设计目的就是在非安全网络环境上为两台非受信主机的通信提供安全加密。
SSH 使用系统全局以及用户指定(用户自定义)的配置文件。在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过特定的选项来连接到远程主机。
先决条件:
1.你必须 在你的桌面 Linux 上安装好 OpenSSH 客户端。
2.了解通过 ssh 进行远程连接的常用选项。
SSH 客户端配置文件
以下为 ssh 客户端配置文件:
1./etc/ssh/ssh_config 为默认的配置文件,属于系统全局配置文件,包含应用到所有用户的 ssh 客户端的设置。
2.~/.ssh/config 或者 $HOME/.ssh/config 为用户指定/自定义配置文件,这个文件中的配置只对指定的用户有效,因此,它会覆盖掉默认的系统全局配置文件中的设置。这也是我们要创建和使用的文件。
默认情况下,用户是通过在 ssh 中输入密码来获取验证的,你可以以一个简单的步骤来 使用 Keygen 来设置 ssh 无密码登录。
注:如果你的系统上不存在 ~/.ssh 目录,那就手动创建它,并设置如下权限:
$ mkdir -p ~/.ssh $ chmod 0700 ~/.ssh
以上的 chmod 命令表明,只有目录属主对该目录有读取、写入和执行权限,这也是 ssh 所要求的设置。
如何创建用户指定的 SSH 配置文件
该文件并不会被默认创建的,所以你需要使用具有读取/写入权限的用户来创建它。
$ touch ~/.ssh/config $ chmod 0700 ~/.ssh/config
上述文件包含由特定主机定义的各个部分,并且每个部分只应用到主机定义中相匹配的部分。
~/.ssh/config 文件的常见格式如下,其中所有的空行和以 ‘#’ 开头的行为注释:
Host host1 ssh_option1=value1 ssh_option2=value1 value2 ssh_option3=value1 Host host2 ssh_option1=value1 ssh_option2=value1 value2 Host * ssh_option1=value1 ssh_option2=value1 value2
如上格式详解:
1.Host host1 为关于 host1 的头部定义,主机相关的设置就从此处开始,直到下一个头部定义 Host host2 出现,这样形成一个完整的定义。
2.host1 和 host2 是在命令行中使用的主机别名,并非实际的远程主机名。
3.其中,如 sshoption1=value1、sshoption2=value1 value2 等配置选项将应用到相匹配的主机,可以缩进以看起来更整齐些。
4.对于 ssh_option2=value1 value2 这样的选项,ssh 执行时会按照顺序优先使用 value1 的值。
5.头部定义 Host * (其中 * 为匹配模式/通配符,匹配零个或多个字符) 会匹配零个或者多个主机。
仍旧以上述的格式为例,ssh 也是也这样的形式类读取配置文件的。如果你执行 ssh 命令来访问远程主机 host1,如下:
$ ssh host1
以上 ssh 命令会进行一下动作:
1.匹配配置文件中主机别名 host1,并使用头部定义中的各个设置项。
2.继续匹配下一个主机定义,然后发现命令行中提供的主机名没有匹配的了,所以接下来的各个设置项会被略过。
3.最后执行到最后一个主机定义 Host *, 这会匹配所有的主机。这里,会将接下来的所有设置选项应用到所有的主机连接中。但是它不会覆写之前已经有主机定义的那些选项。
4.ssh host2 与此类似。
如何使用用户指定的 shh 配置文件
在你理解了 ssh 客户端配置文件的工作方式之后,你可以通过如下方式来创建它。记得使用你的服务器环境中对应的选项、值 (主机别名、端口号、用户名等)。
通过你最喜欢的编辑器来打开配置文件:
$ vi ~/.ssh/config
并定义必要的部分:
Host fedora25 HostName 192.168.56.15 Port 22 ForwardX11 no Host centos7 HostName 192.168.56.10 Port 22 ForwardX11 no Host ubuntu HostName 192.168.56.5 Port 2222 ForwardX11 yes Host * User tecmint IdentityFile ~/.ssh/id_rsa Protocol 2 Compression yes ServerAliveInterval 60 ServerAliveCountMax 20 LogLevel INFO
以上 ssh 配置文件的详细解释:
1.HostName - 定义真正要登录的主机名,此外,你也可以使用数字 IP 地址,不管是在命令行或是 HostName 定义中都允许使用其中任一种。
2.User – 指定以哪一个用户来登录。
3.Port – 设置连接远程主机的端口,默认是 22 端口。但必须是远程主机的 sshd 配置文件中定义的端口号。
4.Protocol – 这个选项定义了优先使用 ssh 支持的协议版本。常用的值为 ‘1’ 和 ‘2’,同时使用两个协议版本则必须使用英文逗号隔开。
5.IdentityFile – 指定一个用于读取用户 DSA、Ed25519、ECDSA 等授权验证信息的文件。
6.ForwardX11 – 定义 X11 连接是否自动重定向到安全通道和 DISPLAY 设置。有两个可以设置的值,即 yes 或 no。
7.Compression – 默认值为 no,如果设置为 yes,则在连接远程主机过程中使用压缩进行传输。
8.ServerAliveInterval – 设置当没有收到服务器响应 (或者数据))时的超时时间,单位为秒,ssh 会通过加密信道发送信息,请求服务器响应。默认值为 0,这意味着 ssh 不会向服务器发送响应请求;如果定义了 BatchMode 选项,则默认是 300 秒。
9.ServerAliveCountMax – 设置服务器在没有接收到服务器的任何响应时,由服务器发送的活动信息数量。
10.LogLevel – 定义 ssh 登录信息的的日志冗余级别。允许的值为:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 和 DEBUG3,默认为 INFO。
连接任意远程主机的标准方法是在上述两个文件中定义第二个部分(我连接的是 CentOS 7)。一般情况下,我们这样输入命令:
$ ssh -i ~/.ssh/id_rsa -p 22 tecmint@192.168.56.10
然而,使用了 ssh 客户端配置文件之后,我们还可以这样:
$ ssh centos7
你也可以在 man 帮助页面寻找更多的设置选项和使用实例:
$man ssh_config
至此,文毕。我们在文中向你介绍了在 Linux 中如何使用用户指定 (自定义) 的 ssh 客户端配置文件。
二 : linux nc命令传输文件(远程复制文件)
nc 到底干嘛用的我不多描述,今天主要讲下用nc 传输文件。由于公司的设备sudo 后没有ssh ,scp 等远程接入命令,或host.deny 里面设置了ssh 的deny ,不管怎样的原因。我今天跨过大家常用的scp, 来说明下一个更有用的轻量级工具,nc 的另一个强大的功--- 文件传输。
范例如下:
目的主机监听
nc -l 监听端口[ 未使用端口] > 要接收的文件名
nc -l 4444 > cache.tar.gz
源主机发起请求
nc 目的主机ip 目的端口 < 要发送的文件
nc 192.168.0.85 4444 < /root/cache.tar.gz
netstat 如下
[root@localhost jiangbao]# netstat -tpln
tcp 0 0 0.0.0.0:4444 0.0.0.0:* LISTEN 18166/nc
英文描述如下
DATA TRANSFER
Start by using nc to listen on a specific port, with output captured into a file:
$ nc -l 1234 > filename.out
Using a second machine, connect to the listening nc process, feeding it the file which is to be transferred:
$ nc host.example.com 1234 < filename.in
另附nc 的其他选项说明:
语 法: nc [-hlnruz][-g< 网关...>][-G< 指向器数目>][-i< 延迟秒数>][-o< 输出文件>][-p< 通信端口>][-s< 来源位址>][-v...][-w< 超时秒数>][ 主机名称][ 通信端口...]
补充说明: 执行本指令可设置路由器的相关参数。
参 数:
-g< 网关> 设置路由器跃程通信网关,最丢哦可设置8 个。
-G< 指向器数目> 设置来源路由指向器,其数值为4 的倍数。
-h 在线帮助。
-i< 延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP 地址,而不通过域名 服务器 。
-p< 通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s< 来源位址> 设置本地主机送出数据包的IP 地址。
-u 使用UDP 传输 协议 。
-v 显示指令执行过程。
-w< 超时秒数> 设置等待连线的时间。
-z 使用0 输入/ 输出模式,只在扫描通信端口时使用
Linux 远程复制文件
如果想把机器A上面的dir目录下面的所有文件复制到机器B的dir目录下,我们可以使用nc命令来完成
在机器A的dir目录下面执行:
tar -czf - * | nc -l 4444
然后再机器B的目录目录dir下面执行:
sudo nc 「机器A的机器ip」 4444 | sudo tar -xzf -
补充资料2:
1,在Linux下需要对大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩的方式。
2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输。
nc和tar可以用来快速的在两台机器之间传输文件和目录,比ftp和scp要来得简单的多。
由于nc是一个超轻量的命令,所以一般busybox都会集成它。当一个linux终端,比如linux pda,通过usblan的方式连接到另一台linux主机的时候,这样的嵌入式终端上一般不会集成ftp server, ssh server这样比较笨重的服务,这个时候, nc可能成为唯一的上传手段。
比如将机器A上的mytest目录上传到到机器 B(192.168.0.11)上,只需要:
在机器B上,用nc来监听一个端口,随便就好,只要不被占用;并且将收到的数据用tar展开。-l代表监听模式。
[root@ www.linuxidc.com ~]#nc -l 4444 |tar -C /tmp/dir -zxf -
然后,在A上通过nc和 tar发送test目录。使用一致的4444的端口。
[root@ www.linuxidc.net ~]#tar -zcvf - mytest|nc 192.168.0.11 4444
记得有一次,一台机器内核崩了,后来有位高手用liveCD把机器启动起来,就是用了类似的方法把数据导出来的。
三 : Linux中禁止root用户SSH登录及修改SSH端口的方法
1、禁止root用户登录ssh
#vi /etc/ssh/sshd_config
PermitRootLogin yes
PermitRootLogin no
#service sshd restart
login as: root
root@192.168.8.100's password:
Access denied
vi /etc/ssh/sshd_config
Port 22
Port 7000
#service sshd restart
四 : Linux下快速安装部署远程连接软件SSH的简明教程
SSH分为客户端和服务端。
服务端是一个守护进程,一般是sshd进程,在后台运行并响应来自客户端的请求。提供了对远程请求的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。
客户端一般是ssh进程,另外还包含scp、slogin、sftp等其他进程。
工作机制:
1. 客户端发送一个连接请求到远程服务端
2. 服务端检查申请的包和IP地址,再发生密钥给SSH客户端;
3. 客户端再将密钥发回服务端,自此建立连接。
下面我们开始正文:
一、客户端
1. 安装客户端(客户端不是必须的)
# apt-get install ssh
# apt-get install openssh-client
$ ssh 192.168.159.128
$ ssh -l weiyg 192.168.159.128
$ ssh weiyg@192.168.159.128
# apt-get install openssh-server
# /etc/init.d/ssh stop #停止
# /etc/init.d/ssh start #启动
# /etc/init.d/ssh restart #重启
# /etc/init.d/ssh restart
Port 20
PermitRootLogin no
五 : 详解Linux下常用远程登陆命令telnet和rlogin的用法
telnet
功能说明:远端登入。
语 法:telnet [-8acdEfFKLrx][-b<主机alias.html' target='_blank'>别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>]
补充说明:执行telnet指令开启终端机阶段作业,并登入远端主机。
参 数:
-8 允许使用8位字符资料,包括输入与输出。
-a 尝试自动登入远端系统。
-b<主机别名> 使用别名指定远端主机名称。
-c 不读取用户专属目录里的.telnetrc文件。
-d 启动排错模式。
-e<脱离字符> 设置脱离字符。
-E 滤除脱离字符。
-f 此参数的效果和指定"-F"参数相同。
-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-K 不自动登入远端主机。
-l<用户名称> 指定要登入远端主机的用户名称。
-L 允许输出8位字符资料。
-n<记录文件> 指定文件记录相关信息。
-r 使用类似rlogin指令的用户界面。
-S<服务类型> 设置telnet连线所需的IP TOS信息。
-x 假设主机有支持数据加密的功能,就使用它。
-X<认证形态> 关闭指定的认证形态。
telnet是一种远程连接协议
命令 “telnet ip 端口” 连接 指定的ip和端口的远程主机
想当于 不带参数直接运行 telnet 命令,计入命令模式后,再运行 'open ip 端口" 命令
运行 help 可以看到命令版主, display 可以看到escape 设置, "^]" 中的^ 表示 ctrl键
就是说已经连上主机后, 同时按 Ctrl 和 ] 两个键进入telnet客户端的命令模式。
例:
[root@localhost ~]# telnet #telnet内部操作
echo [^E]
escape [^]]
rlogin [off]
tracefile "(standard output)"
flushoutput [^O]
interrupt [^C]
quit [^]
eof [^D]
erase [^?]
kill [^U]
lnext [^V]
susp [^Z]
reprint [^R]
worderase [^W]
start [^Q]
stop [^S]
forw1 [off]
forw2 [off]
ayt [^T]
[root@localhost ~]# telnet 127.0.0.1 6379 #当前用户登录远程主机
rlogin
rlogin 命令:用来连接当前本地主机系统到远端的主机系统
参数
-E 忽略escape字符
-8 只识别8位字的字符
-L 允许rlogin会话运行在litout模式
-ec 设置escape字符为c
-c 断开连接前要求确认
-a 强制要求远程主机在发送完一个空的本地用户名之后请求一个密码
-f 向远端主机发送一个本地认证
-F 向远程主机发送一个可转寄的本地认证
-7 强制执行7为的传输
-d 打开用于远端主机通信的TCP套接口的调试
-k 要求包含远端主机的tisckets
-x 启动数据传输的DES加密
-4 只使用 kerkberos的版本4的认证
-e<字符> 设置退出字符
-l<用户> 指定登陆的用户
-t<终端类型> 设置终端类型
例
[root@localhost www]# rlogin 192.168.1.108 #当前用户登录远程主机
[root@localhost www]# rlogin 192.168.1.108 -l tank #以tank用户登录远程主机
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1