SSH服务及其扩展(sshpass和expect)

Linux SSH服务一共包含三个工具:ssh、scp、sftp

[远程连接及执行命令]

语法:ssh -p端口 账号@IP 命令

参数说明:-o StrictHostKeyChecking=no  //取消提示

-p 端口

2  示例:

ssh -p22[email protected]

ssh -p22 [email protected] /sbin/ifconfig

[远程拷贝:推送及拉取]

语法:scp -P端口 -r -p 源目录 账号@IP:目的目录

参数说明:-r递归拷贝目录
-p保持文件属性 -l限速

2  示例:

scp -P22 -r -p /etc [email protected]:/tmp/

scp -P22 -r -p [email protected]:/tmp/ /etc

[安全的FTP功能]

语法:sftp
-oPort=22 账号@IP

参数说明:put上传 get下载

2  示例:

sftp -oPort=22 [email protected]

[无密码验证,批量分发]

1、所有机器均需创建用户及密码

useradd distribution

echo 123456|passwd --stdin distribution

2、管理机创建密钥(创建密钥命令:ssh-keygen
-t dsa)

非交换式创建密钥:

echo -e "\n"|ssh-keygen -t dsa -N
""

3、管理机分发密钥

ssh-copy-id -i .ssh/id_dsa.pub "-p 端口
账号@IP"

4、编写脚本(服务安装、优化、批量创建账号密码)使用ssh远程连接并执行命令达到批量管理的目的

———————————————————————————————————————

[/etc/ssh/sshd_config配置文件]

过滤掉注释及空行:grep -nvE "#|^$"
/etc/ssh/sshd_config

[sshd_config详解]

# 1. 关于 SSH Server 的整体设定,包含使用的 port 啦,以及使用的密码演算方式

Port 22          # SSH 预设使用 22 这个 port,您也可以使用多的
port !

              # 亦即重复使用 port 这个设定项目即可!

Protocol 2,1        # 选择的 SSH 协议版本,可以是 1 也可以是
2 ,

              # 如果要同时支持两者,就必须要使用 2,1 这个分隔了!

#ListenAddress 0.0.0.0   # 监听的主机适配卡!举个例子来说,如果您有两个 IP,

              # 分别是 192.168.0.100 及 192.168.2.20 ,那么只想要

              # 开放 192.168.0.100 时,就可以写如同下面的样式:

ListenAddress 192.168.0.100# 只监听来自 192.168.0.100 这个 IP 的SSH联机。

              # 如果不使用设定的话,则预设所有接口均接受 SSH

PidFile /var/run/sshd.pid # 可以放置 SSHD 这个 PID
的档案!左列为默认值

LoginGraceTime 600     # 当使用者连上 SSH
server 之后,会出现输入密码的画面,

              # 在该画面中,在多久时间内没有成功连上 SSH server ,

              # 就断线!时间为秒!

Compression yes      # 是否可以使用压缩指令?当然可以啰!

 

# 2. 说明主机的 Private Key 放置的档案,预设使用下面的档案即可!

HostKey /etc/ssh/ssh_host_key    # SSH version 1 使用的私钥

HostKey /etc/ssh/ssh_host_rsa_key  # SSH
version 2 使用的 RSA 私钥

HostKey /etc/ssh/ssh_host_dsa_key  # SSH
version 2 使用的 DSA 私钥

# 2.1 关于 version 1 的一些设定!

KeyRegenerationInterval 3600     # 由前面联机的说明可以知道,
version 1 会使用

                   #
server 的 Public Key ,那么如果这个
Public

                   # Key 被偷的话,岂不完蛋?所以需要每隔一段时间

                   # 来重新建立一次!这里的时间为秒!

ServerKeyBits 768          #
没错!这个就是 Server key 的长度!

# 3. 关于登录文件的讯息数据放置与 daemon 的名称!

SyslogFacility AUTH         # 当有人使用 SSH 登入系统的时候,SSH会记录资

                   # 讯,这个信息要记录在什么 daemon name 底下?

                   # 预设是以 AUTH 来设定的,即是 /var/log/secure

                   # 里面!

                   # 其它可用的 daemon name 为:DAEMON,USER,AUTH,

                   #
LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,

LogLevel INFO            # 登录记录的等级!

# 4. 安全设定项目!极重要!

# 4.1 登入设定部分

PermitRootLogin no    # 是否允许 root 登入!预设是允许的,但是建议设定成 no!

UserLogin no       #
在 SSH 底下本来就不接受 login 这个程序的登入!

StrictModes yes     # 当使用者的 host key 改变之后,Server 就不接受联机,

             # 可以抵挡部分的木马程序!

#RSAAuthentication yes  # 是否使用纯的 RSA 认证!?仅针对 version 1 !

PubkeyAuthentication yes # 是否允许 Public Key ?当然允许啦!只有 version 2

AuthorizedKeysFile     
.ssh/authorized_keys

             # 上面这个在设定若要使用不需要密码登入的账号时,那么那个

             # 账号的存放档案所在档名!

# 4.2 认证部分

RhostsAuthentication no  # 本机系统不止使用 .rhosts ,因为仅使用 .rhosts 太

              # 不安全了,所以这里一定要设定为 no !

IgnoreRhosts yes      #
是否取消使用 ~/.ssh/.rhosts 来做为认证!当然是!

RhostsRSAAuthentication no
# 这个选项是专门给 version 1 用的,使用 rhosts 档案在

              #
/etc/hosts.equiv配合 RSA 演算方式来进行认证!不要使用

HostbasedAuthentication no #
这个项目与上面的项目类似,不过是给
version 2 使用的!

IgnoreUserKnownHosts no  # 是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录

              # 的主机内容?当然不要忽略,所以这里就是 no 啦!

PasswordAuthentication yes #
密码验证当然是需要的!所以这里写 yes 啰!

PermitEmptyPasswords no  # 若上面那一项如果设定为 yes 的话,这一项就最好设定

              # 为 no ,这个项目在是否允许以空的密码登入!当然不许!

ChallengeResponseAuthentication yes # 挑战任何的密码认证!所以,任何 login.conf

                   # 规定的认证方式,均可适用!

#PAMAuthenticationViaKbdInt yes   # 是否启用其它的 PAM 模块!启用这个模块将会

                   # 导致 PasswordAuthentication 设定失效!

 

# 4.3 与 Kerberos 有关的参数设定!因为我们没有 Kerberos 主机,所以底下不用设定!

#KerberosAuthentication no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

#KerberosTgtPassing no

 

# 4.4 底下是有关在
X-Window 底下使用的相关设定!

X11Forwarding yes

#X11DisplayOffset 10

#X11UseLocalhost yes

# 4.5 登入后的项目:

PrintMotd no       #
登入后是否显示出一些信息呢?例如上次登入的时间、地点等

             # 等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !

PrintLastLog yes     # 显示上次登入的信息!可以啊!预设也是 yes !

KeepAlive yes       # 一般而言,如果设定这项目的话,那么 SSH Server 会传送

             # KeepAlive 的讯息给 Client 端,以确保两者的联机正常!

             # 在这个情况下,任何一端死掉后, SSH 可以立刻知道!而不会

             # 有僵尸程序的发生!

UsePrivilegeSeparation yes#
使用者的权限设定项目!就设定为 yes 吧!

MaxStartups 10      # 同时允许几个尚未登入的联机画面?当我们连上 SSH ,

             # 但是尚未输入密码时,这个时候就是我们所谓的联机画面啦!

             # 在这个联机画面中,为了保护主机,所以需要设定最大值,

             # 预设最多十个联机画面,而已经建立联机的不计算在这十个当中

# 4.6 关于使用者抵挡的设定项目:

DenyUsers *        # 设定受抵挡的使用者名称,如果是全部的使用者,那就是全部

             # 挡吧!若是部分使用者,可以将该账号填入!例如下列!

DenyUsers test

DenyGroups test     
# 与 DenyUsers 相同!仅抵挡几个群组而已!

# 5. 关于 SFTP 服务的设定项目!

Subsystem      
sftp    /usr/lib/ssh/sftp-server

【拓展非交换式工具】

sshpass实现ssh的自动登陆

安装:

yum install lrzsz -y

rz

tar -xf sshpass.tar.gz

cd sshpass-1.06

./configure

make

make install

sshpass -p 123456 ssh -p52113 -o
StrictHostKeyChecking=no [email protected] /sbin/ifconfig

sshpass 参数 SSH命令(ssh,sftp,scp等)。

参数:

-p password      //将参数password作为密码。

-f passwordfile  //提取文件passwordfile的第一行作为密码。

-e                //将环境变量SSHPASS作为密码。

expect实现非交互分发公钥

安装:

yum install -y expect

vim
/server/scripts/distribution_id_dsa_pub.exp

#!/usr/bin/expect

set timeout 30

spawn ssh-copy-id -i
.ssh/id_dsa.pub "-p 52113 [email protected]"

expect "password:"

send "123456\r"

interact

expect /server/scripts/distribution_id_dsa_pub.exp

原文地址:https://www.cnblogs.com/tcheng/p/8506756.html

时间: 2024-08-04 02:20:54

SSH服务及其扩展(sshpass和expect)的相关文章

Shell脚本------Expect(实现ssh服务免交互)

Expect基本概述 Expect是通用的,因此它可以作为用户级别的命令运行,而无需考虑任何程序和任务.Expect实际上可以同时与多个程序对话.Expect对于需要程序与用户交互的程序来说非常有用.如果有需要Expect还可以交还控制权给用户,而不需要停止被控制的程序.同样,用户也可以在任何时候将控制权返还给脚本. 常用选项 -c:在脚本中任何要执行的命令之前的命令前缀.应该用引号将命令包围起来,防止被shell破坏.此选项可以多次使用.多个命令可以用一个-c按顺序执行,用分号进行分隔(如果使

SSH服务及批量分发与管理实战

SSH服务 一.SSH服务介绍 SSH是Secure Shell Protocol的简写,由IETF网络工作小组制定:在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行数据传输,确保了传递的数据安全. SSH是专为远程登录会话和其他网络服务提供的安全性协议.利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境当中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件.如telnet等. SSH服务功能: a.类似telnet远程

安全与加密之gpg,ssh服务

安全与加密 本章目录 gpg的使用 ssh服务 dropbear aide 1. gpg的使用 GPG是加密和数字签名的免费工具,大多用于加密信息的传递.除了仅用密码加密外,GPG最大的不同是提供了"公钥/私钥"对.利用你的"公钥"别人加密信息不再需要告诉你密码,随时随地都能发送加密信息.而这种加密是单向的,只有你的"私钥"能解开加密.数字签名又是另一大使用方向.通过签名认证,别人能确保发布的消息来自你,而且没有经过修改. 使用gpg实现对称加密

win10下Linux子系统开启ssh服务

原文地址:http://whosmall.com/?post=430 本文标签: 开启ssh Linux子系统 虽然win10自带的bash功能已经很丰富,操作也简便,不过习惯了用xshell, 还是选择用xshell来操作 直接用xshell连接127.0.0.1 端口22 提示连接失败.说明应该是ubuntu的sshd服务设置有问题: 解决方案如下: 安装ssh apt-get install openssh-server 备份sshd配置文件 sudo cp /etc/ssh/sshd_c

在Virtual Box上安装linux系统,启动SSH服务

? 一.????在Virtual Box上创建虚拟机????1 二.????安装linux系统????6 三.????重新设置 root 的密码:????8 四.????启动ssh服务????8 五.????建立共享文件夹????9 ? ? 摘自以下网页内容: 如何在Virtual Box上安装linux系统 : http://jingyan.baidu.com/album/2009576197fd24cb0721b409.html?picindex=1 Linux终端得到root权限 :htt

第1章 ssh和SSH服务(包含隧道内容)

本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机. 另外,本人翻译了ssh客户端命令的man文档,如本文有不理解的地方,可以参考man文档手册:ssh中文手册. 本文目录: 1.1 非对称加密基础知识 1.2 SSH概要 1.3 SSH认证过程分析 1.3.1 主机验证过程 1.3.2 身份验证过程 1.3.3 验证通过 1.4 各种文件分布 1.5 配置文件简单介绍 1.5.1 s

如何在ubuntu中启用SSH服务

如何在ubuntu14.04 中启用SSH服务 开篇科普:  SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台.SSH在正确使用时可弥补网络中的漏洞.SSH客户端适用于多种平台

为Ubuntu安装SSH服务

只有当Ubuntu安装了SSH服务后,我们才能够通过ssh工具登陆Ubuntu.我自己喜欢使用x-shell作为终端工具 1.安装Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可.安装ssh-serversudo apt-get install openssh-server安装ssh-clientsudo apt-get install openssh-client 2.确认sshserver是否安装好ps -e |

ssh和SSH服务(包含隧道内容)

ssh和SSH服务(包含隧道内容) 72.16.10.6:/etc/fstab-->/172.16.10.3:/tmp/a.txt. [[email protected] ~]# scp 172.16.10.6:/etc/fstab 172.16.10.3:/tmp/a.txt fstab 100% 501 0.5KB/s 00:00 Connection to 172.16.10.6 closed. 1.7.1 scp拷贝机制分析 scp的拷贝实质是建立ssh连接,然后通过此连接来传输数据.如