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

请教如何用ssh连接远程服务器,第1张

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

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

1、运行环境

WINDOWS下安装SSH客户端,名字是SSHSecureShellClient-329exe,可以到http://wwwsshcom/下载,当然了,在SERVER端我们也可以安装Openssh,但此文章着重介绍的是ssh的技术,所以我们使用的是http://wwwsshcom/ for UNIX/LINUX 的SERVER 端,现在最新版本是ssh-329-1i386rpm(如果你是AIX或者SOLARIS,要下不同的版本,这里以RHCE3为例子)。确定把UNIX类主机的默认的Openssh全部卸载掉后安装ssh-329-1i386rpm。

2、为什么要公私钥认证方法(连接到主机不输入密码)

我们需要知道Publick Key是指公钥,而private key是指私钥。认证的过程是这样的:public key对数据进行加密而且只能用于加密,private key只能对所匹配的public key加密过的数据进行解密。我们把public key放在远程系统合适的位置,然后从本地开始进行ssh连接。此时,远程的sshd会产生一个随机数并用我们产生的public key进行加密后发给本地,本地会用private key进行解密并把这个随机数发回给远程系统。最后,远程系统的sshd会得出结论——我们拥有匹配的private key允许我们登录。就这么简单!

3、在本机生成密钥过程

WINDOWS下寻找ssh-keygen2exe文件,这是生成密钥的文件,我的在C:/Program Files/SSH Communications Security/SSH Secure Shell,在DOS下执行这个文件,方法是

C:/Program Files/SSH Communications Security/SSH Secure Shell ssh-keygen2 -t rsa

我用的是rsa的密钥,默认是2048位,足够我们用的了,还可以使用dsa方式的密钥。我就不在这里说明了

系统自动生成密钥对,默认放在C:/Documents and Settings/XXX/Application Data/SSH/UserKeys目录下,其中XXX是你执行程序时用的帐户,默认名称是id_rsa_2048_a和id_rsa_2048_apub,而后者就是我们要传到服务器上的公钥。(生成密钥对的同时让你输入一个密码,因为我们想不输入密码直接登陆服务器,所以就直接回车了,但如果你想更安全一些,还是建议你在这里也输入密码。)

4、用SSH客户端从本机登陆到远程UNIX类服务器上

我们还按以前的方法登陆到远程UNIX类服务器上,这样登陆后我们会在用户目录下,PWD一下,你可以看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个ssh2的文件夹,在里面建立一个文件,authorization,内容如下:

key id_rsa_2048_apub

然后把你WINDOWS客户端上的id_rsa_2048_apub上传到你在UNIX类服务器上刚建立好的ssh2文件夹下,关闭SSH客户端。

5、用SSH客户端公钥认证状态登陆

重新启动SSH客户端,在登陆认证状态栏选择Public Key方式,登陆到你刚才放id_rsa_2048_apub的那台服务器,你会发现你马上就登陆进来了,没有密码限制了。这个时候用公私钥认证和用密码认证同时存在,还没有达到我们的要求,那我们就在UNIX类服务器上修改/etc/ssh2/sshd2_config文件

把以下如下三行的password 删除,下面这三行是修改好的

AllowedAuthentications publickey

AllowedAuthentications hostbased,publickey

RequiredAuthentications publickey

这样当你再用密码登陆的时候就出现如下对话框了!!

第二章 SSH客户端之Putty的连接方法

1、运行环境

WINDOWS下安装的SSH客户端,名字是putty-056-installerexe,可以到如下地址下载:

http://wwwchiarkgreenendorguk/~sgtatham/putty/downloadhtml,这个安装包是所有工具的集合,其实如果只做为连接用,你可以只下putty056exe的。但我们这里因为要做密钥对,所以就下整个包安装吧。

2、在本机生成密钥过程

用putty套装的puttygen来产生密钥。密钥的类型选择SSH2 RSA。密钥的位数选择2048,然后点击"Generator",此时密钥生成当然也有几个选项出现。如果你有不止一个key,你可以在“Key comment”作注释用于区别其他的key。“Key passphrase“和“Confirm passphrase“用于对硬盘上的key进行加密,如过你自己一个人用机器觉得安全有保障的话可以让它们为空。然后保存两个key,用默认方式保存,那么公钥你可以指定文件名,私钥默认的文件扩展名是ppk。在这里我们命名它为testppk,而公钥我们保存为testpub,需要注意的是,如果用putty连接,私钥的扩展名必须是ppk,而且你还可以将这个ppk的私钥保存为SSH Secure Shell 格式和Openssh格式认知的私钥,这个对两个UNIX类主机之间相互通信提供了很大帮助。(我们以后会将两个UNIX类主机通过公私钥认证的方法给大家讲讲)

4、用Putty从本机登陆到远程UNIX类服务器上

我们还按先前的方法登陆到远程UNIX类服务器上,这样登陆后我们会在用户目录下,PWD一下,你可以看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个ssh2的文件夹,在里面建立一个文件,authorization,内容如下:

key testpub

然后把你WINDOWS客户端上的testpub上传到你在UNIX类服务器上刚建立好的ssh2文件夹下,关闭Putty。这个上传命令你可以用 put ,下载就用get。你的通道可以用PSFTP建立,这个也在PUTTY的组件中。

5、用SSH客户端公钥认证状态登陆

重新启动Putty,建立一个session命名为test,设定你要登陆的远程ip,协议设为ssh,Connection设定在ssh的auth选项中,将private key的文件选择为刚才我们由puttygen产生的密钥testppk。点Open,要求输入username,我们输入用户名后远程系统开始public key认证,如果密钥有passphrase 则需要输入,否则直接就登录了。这个时候用公私钥认证和用密码认证同时存在,还没有达到我们的要求,那我们就在UNIX类服务器上修改/etc/ssh2/sshd2_config文件

把以下如下三行的password 删除,下面这三行是修改好的

AllowedAuthentications publickey

AllowedAuthentications hostbased,publickey

RequiredAuthentications publickey

这样当你再用密码登陆的时候就出现如下对话框了!!

第三章

Ssh服务器端安装

1、环境:

因为我们选用的SSH服务器是http://wwwsshcom 的SSH Secure Shell for unix类产品,所以我们主要介绍一下此类的Ssh服务器的安装过程。(SSH有两个版本,我们现在介绍的是版本2;Openssh就不介绍了,大家有兴趣的话可以参考一下网上文章)

2、编译安装

我们前面介绍过,现在的Ssh server for unix 类的最新版本是ssh-329-1,我建议大家用官方提供的TAR包,当然,如果你不熟悉编译过程,用RPM等安装方式也是可以的。如果用RPM安装,请先下载ssh-329-1i386rpm , 大家可以到以下地址下载:

http://ftpsshcom/priv/secureshell/329wks+srv-lt49ldrk/linux/ssh-329-1i386rpm

安装时请用管理员权限

# rpm –ivh ssh-329-1i386rpm 如果是升级安装那参数就用 –Uvh

而329-1的TAR包大家可以到http://downloadsplanetmirrorcom/pub/ssh/ssh-3291targz下载。安装时也使用管理员权限:

# tar xzvf ssh-3291targz

# cd ssh-3291

# /configure (这里我们要说明一下,原来有些文档写如果你希望用tcp_wrappers来控制SSH,那么在configure时需要加上选项“--with-libwrap=/path/to/libwrap/”, 用来告诉SSH关于libwrapa 和tcpdh的位置,但320以上的SSH已经不需要这么麻烦了,它们已经内置了控制访问权限的功能。)

# make ; make install ; make clean

这样就结束了安装。

3、简单配置Ssh server

无论你是用RPM或TAR包安装的ssh server,它的配置文件都在/etc/ssh2/sshd2_config,安装完后一般不用配置它,但如果你的22端口在安装ssh server之前已经被其他程序占用,那么你需要简单的配置一下这个文件,执行 vi /etc/ssh2/sshd2_config,找到第27行,Port 22 ,把22改成其他的端口就可以了。

4、启动Ssh server

Ssh server 的默认启动文件是/usr/local/sbin/sshd2,而安装程序自动做了一个连接到这个文件的名字为sshd的文件,我们只要在/usr/local/sbin/目录中执行 /sshd 就可以简单的启用Ssh server,然后我们执行 # netstat –na 会看见22端口已经被监听了(你的可能是其他端口,具体看你在sshd2_config文件中的设置了。)但我们不想每次都要手动启动Ssh server,那么我们可以修改一下/etc/rcd/rclocal文件,在这个文件的最后加入以下内容:

#start ssh

/usr/local/sbin/sshd

其中第一行为注释内容,第二行为启动SSH服务器并作为后台守护进程运行。

这样就好了,系统重起时可以自动启动SSH服务,但是启动后你如果在服务器端插上显示器,会在最后该登陆的时候看到一行字,意思就是Ssh server 服务启动了,我比较挑剔,不想看到这个提示,而且我想把Ssh服务放到LINUX服务启动过程中,这样比较美观一点。那么我们就不能修改/etc/rcd/rclocal文件,我们要进入/etc/initd/中建立一个SHELL文件,名字就叫sshd 内容如下:

#!/bin/bash

cd /usr/local/sbin

/sshd

然后给这个文件加上可执行权限

# chmod +x sshd

然后进入/etc/rc3d,做一个软链接文件

# cd /etc/rc3d

# ln -s /initd/sshd S13sshd

这样就达到了我的要求,好了,Ssh server的安装就介绍到这里吧,安装是很简单的,希望大家编译安装成功。

方法有两种比如:

第一种:IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项,重启IIS;

第二种:Apache中关闭目录浏览功能:

打开Apache配置文件httpdconf。查找 “Options Indexes FollowSymLinks”,修改为“ Options -Indexes”(减号表示取消),保存退出,重启Apache。

效果: pingsh代码: #ssh连接服务器 function getConnection() { ssh -o NumberOfPasswordPrompts=0 $1@$2 "pwd" &>/dev/null if [ $ != 0 ];then echo -e "

无法连接到$2" continue else echo -e "

成功连接$2" fi } #这里可以通过读取文linux服务器上通过脚本判断ssh服务是否正常

《metasploit渗透测试指南》

第1章 渗透测试技术基础 1

11 ptes标准中的渗透测试阶段 2

111 前期交互阶段 2

112 情报搜集阶段 2

113 威胁建模阶段 2

114 漏洞分析阶段 3

115 渗透攻击阶段 3

116 后渗透攻击阶段 3

117 报告阶段 4

12 渗透测试类型 4

121 白盒测试 5

122 黑盒测试 5

13 漏洞扫描器 5

14 小结 6

第2章 metasploit基础 7

21 专业术语 7

211 渗透攻击(exploit) 8

212 攻击载荷(payload) 8

213 shellcode 8

214 模块(module) 8

215 监听器(listener) 8

22 metasploit用户接口 8

221 msf终端 9

222 msf命令行 9

223 armitage 11

23 metasploit功能程序 12

231 msf攻击载荷生成器 12

232 msf编码器 13

233 nasm shell 13

24 metasploit express和metasploit pro 14

25 小结 14

第3章 情报搜集 15

31 被动信息搜集 16

311 whois查询 16

312 netcraft 17

313 nslookup 18

32 主动信息搜集 18

321 使用nmap进行端口扫描 18

322 在metasploit中使用数据库 20

323 使用metasploit进行端口扫描 25

33 针对性扫描 26

331 服务器消息块协议扫描 26

332 搜寻配置不当的microsoft sql server 27

333 ssh服务器扫描 28

334 ftp扫描 29

335 简单网管协议扫描 30

34 编写自己的扫描器 31

35 小结 33

第4章 漏洞扫描 35

41 基本的漏洞扫描 36

42 使用nexpose进行扫描 37

421 配置 37

422 将扫描报告导入到metasploit中 42

423 在msf控制台中运行nexpose 43

43 使用nessus进行扫描 44

431 配置nessus 44

432 创建nessus扫描策略 45

433 执行nessus扫描 47

434 nessus报告 47

435 将扫描结果导入metasploit框架中 48

436 在metasploit内部使用nessus进行扫描 49

44 专用漏洞扫描器 51

441 验证smb登录 51

442 扫描开放的vnc空口令 52

443 扫描开放的x11服务器 54

45 利用扫描结果进行自动化攻击 56

第5章 渗透攻击之旅 57

51 渗透攻击基础 58

511 msf] show exploits 58

512 msf] show auxiliary 58

513 msf] show options 58

514 msf] show payloads 60

515 msf] show targets 62

516 info 63

517 set和unset 63

518 setg和unsetg 64

519 save 64

52 你的第一次渗透攻击 64

53 攻击一台ubuntu主机 68

54 全端口攻击载荷:暴力猜解目标开放的端口 71

55 资源文件 72

56 小结 73

第6章 meterpreter 75

61 攻陷windows xp 虚拟机 76

611 使用nmap扫描端口 76

612 攻击ms sql 76

613 暴力破解ms sql服务器 78

614 xp_cmdshell 79

615 meterpreter基本命令 80

616 获取键盘记录 81

62 挖掘用户名和密码 82

621 提取密码哈希值 82

622 使用meterpreter命令获取密码哈希值 83

63 传递哈希值 84

64 权限提升 85

65 令牌假冒 87

66 使用ps 87

67 通过跳板攻击其他机器 89

68 使用meterpreter脚本 92

681 迁移进程 92

682 关闭杀毒软件 93

683 获取系统密码哈希值 93

684 查看目标机上的所有流量 93

685 攫取系统信息 93

686 控制持久化 94

69 向后渗透攻击模块转变 95

610 将命令行shell升级为meterpreter 95

611 通过附加的railgun组件操作windows api 97

612 小结 97

第7章 免杀技术 99

71 使用msf攻击载荷生成器创建可独立运行的二进制文件 100

72 躲避杀毒软件的检测 101

721 使用msf编码器 102

722 多重编码 103

73 自定义可执行文件模板 105

74 隐秘地启动一个攻击载荷 106

75 加壳软件 107

76 小结:关于免杀处理的最后忠告 108

第8章 客户端渗透攻击 109

81 基于浏览器的渗透攻击 110

811 基于浏览器的渗透攻击原理 111

812 空指令 112

82 使用immunity调试器来揭秘空指令机器码 112

83 对ie浏览器的极光漏洞进行渗透利用 116

84 文件格式漏洞渗透攻击 119

85 发送攻击负载 120

86 小结 121

第9章 metasploit辅助模块 123

91 使用辅助模块 126

92 辅助模块剖析 128

93 小结 133

第10章 社会工程学工具包 135

101 配置set工具包 136

102 针对性钓鱼攻击向量 137

103 web攻击向量 142

1031 java applet 142

1032 客户端web攻击 146

1033 用户名和密码获取 148

1034 标签页劫持攻击 150

1035 中间人攻击 150

1036 网页劫持 151

1037 综合多重攻击方法 153

104 传染性媒体生成器 157

105 teensy usb hid攻击向量 157

106 set的其他特性 160

107 小结 161

第11章 fast-track 163

111 microsoft sql注入 164

1111 sql注入——查询语句攻击 165

1112 sql注入——post参数攻击 166

1113 手工注入 167

1114 ms sql破解 168

1115 通过sql自动获得控制(sqlpwnage) 172

112 二进制到十六进制转换器 174

113 大规模客户端攻击 175

114 小结:对自动化渗透的一点看法 176

第12章 karmetasploit无线攻击套件 177

121 配置 178

122 开始攻击 179

123 获取凭证 181

124 得到shell 182

125 小结 184

第13章 编写你自己的模块 185

131 在ms sql上进行命令执行 186

132 探索一个已存在的metasploit模块 187

133 编写一个新的模块 189

1331 powershell 189

1332 运行shell渗透攻击 190

1333 编写powershell_upload_exec函数 192

1334 从十六进制转换回二进制程序 192

1335 计数器 194

1336 运行渗透攻击模块 195

134 小结:代码重用的能量 196

第14章 创建你自己的渗透攻击模块 197

141 fuzz测试的艺术 198

142 控制结构化异常处理链 201

143 绕过seh限制 204

144 获取返回地址 206

145 坏字符和远程代码执行 210

146 小结 213

第15章 将渗透代码移植到metasploit框架 215

151 汇编语言基础 216

1511 eip和esp寄存器 216

1512 jmp指令集 216

1513 空指令和空指令滑行区 216

152 移植一个缓冲区溢出攻击代码 216

1521 裁剪一个已有的渗透攻击代码 218

1522 构造渗透攻击过程 219

1523 测试我们的基础渗透代码 220

1524 实现框架中的特性 221

1525 增加随机化 222

1526 消除空指令滑行区 223

1527 去除伪造的shellcode 223

1528 我们完整的模块代码 224

153 seh覆盖渗透代码 226

154 小结 233

第16章 meterpreter脚本编程 235

161 meterpreter脚本编程基础 235

162 meterpreter api 241

1621 打印输出 241

1622 基本api调用 242

1623 meterpreter mixins 242

163 编写meterpreter脚本的规则 244

164 创建自己的meterpreter脚本 244

165 小结 250

第17章 一次模拟的渗透测试过程 251

171 前期交互 252

172 情报搜集 252

173 威胁建模 253

174 渗透攻击 255

175 msf终端中的渗透攻击过程 255

176 后渗透攻击 257

1761 扫描metasploitable靶机 258

1762 识别存有漏洞的服务 259

177 攻击apache tomcat 260

178 攻击一个偏门的服务 262

179 隐藏你的踪迹 264

1710 小结 266

附录a 配置目标机器 267

附录b 命令参考列表 275

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 请教如何用ssh连接远程服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情