搭架SSH服务器学习笔记

来源:互联网 发布:国际劳工组织数据库 编辑:程序博客网 时间:2024/05/17 20:25

1. 背景:

         安全外壳协议(Secure Shell,SSH)是目前应用较多的一个网络安全协议。它为网络上传输的数据提供机密性、完整性、认证性等安全服务。

最近在研究git服务器,要使用ssh协议,需要搭架ssh服务器,这是第一次搭架,做下笔记,以供参考,以下是我的应用环境:

C/S

操作系统

软件

IP地址

SSH服务端

Linux(debian)

OpenSSH

192.168.1.101

SSH客户端

Windows XP

Copssh

192.168.1.100

 

ssh客户端有很多选择,可以到这里看看:

http://en.wikipedia.org/wiki/Comparison_of_SSH_clients

2. linux上安装OpenSSH

◆如果要下载源码安装,可以到以下几个链接下载:

官网:http://www.openssh.com/

下载:http://www.openssh.com/openbsd.html

◆我选择直接从软件包安装:

#apt-get install ssh

以上命令安装同时安装了openssh-serveropenssh-client,你也可以有选择性的安装:

#apt-get install openssh-server

#apt-get install openssh-client

安装完后应该会自动运行ssh服务,可以通过以下指令确认:

#ps aux|grep ssh

 

3. Windows XP上安装CopSSH

官网:https://www.itefix.no/i2/copssh

安装过程很简单,一直“下一步”即可。

4. SSH登陆

         SSH提供了两种认证方式:口令认证和密钥认证。在Windows XP安装完CopSSH后,在开始菜单 > CopSSH > 03. Start a Unix BASH Shell启动Shell窗口,在这里就可以使用ssh命令。

4.1. 口令认证

用服务器上的root身份登陆:

第一次登陆时,会提示无法创建/home/Administrator/.ssh目录,你可以用以下命令创建该目录:

$ mkdir –p  /home/Administrator/.ssh

同时,你第一次登录某一个远程主机时,会出现没有找到远程主机密钥的提示信息。输入"yes"后,系统会将远程主机的密钥加入到你的主目录下的/home/Administrator/.ssh/known_hosts文件中。以后登录就不会再提示了,直接输入服务器账号root的密码即可登录。

         登陆后,你就可以远程操作服务器了,要登出,用exit或者logout命令。

        要保证.ssh和authorized_keys都只有用户自己有写权限,否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

4.2. 密钥认证

基于口令的认证,需要在用户每次登录的时候都输入用户名和口令,显得比较麻烦。而基于公共密钥的认证,只需要在第一次输入密钥口令,就可以不需要再次输入,一次分发密钥后,验证将由程序自动进行,且安全性比基于口令方式更强。

4.2.1. 原理

SSH双方,通过相应帐号主目录下的.ssh目录中的客户端密钥对id_rsa、id_rsa.pub文件和服务端authorized_keys文件中密钥进行验证。

id_rsa

自己的rsa私钥

id_rsa_pub

自己的rsa公钥

authorized_keys

存放rsa客户端的公钥

4.2.2. 通信过程

◆客户端向ssh服务器发出连接请求,请求用密匙进行安全验证,该请求包含请求的帐号和自己的公钥。

◆ssh服务器收到请求后,先在服务器的用户目录下对应帐号目录中寻找你的公用密钥(如/root/.ssh/authorized_keys文件中),如果找到的公钥与客户端发来的公钥一致,则开始进行下一步“质询”。

◆服务器用该公钥加密“质询”(challenge)信息,并发送绐客户端。

◆客户端收到加密的质询信息后,用自己的密钥对其解密,并将解密后的信息发送回服务器。

◆服务器验证客户端返回的质询信息正确后,验证结束,双方开始通信。

4.2.3. 配置方法

在客户端用以下指令生成密钥对文件(补充:后来发现最好是用ssh-keygen -t rsa,有次我在CentOS系统上运行ssh-keygen产生的密钥对就不是rsa的):

         之后将生成的id_rsa.pub文件内容附加到服务器对应帐号下的authorized_keys文件末尾即可,如果没有该文件则新建一个,如:/root/.ssh/authorized_keys。有以下两种操作方法:

◆远程操作

$ ssh-copy-id -i  ~/.ssh/id_rsa.pub  root@192.168.1.101

在CopSSH的Shell中没法用ssh-copy-i命令,如果客户端是安装在linux就可以用该命令了。

◆文件拷贝到服务器上操作

         先在客户端用scp命令将文件拷贝到远程服务器:

         然后登陆到服务器,在服务器上操作,将文件id_rsa.pub追加到authorized_keys文件中。操作如下:

4.2.4. 公钥认证无需输入口令

按以上任一方法配置,以后登陆就无需输入密码,如下图所示:

 

 

4.3. 设置主机别名

实际应用中,可能同时需要多套公钥/私钥对。在使用ssh-keygen命令时需要通过-f参数指定不同的私钥名称。用法如下:

$ ssh-keygen -f ~/.ssh/<filename>

指定有意义的<filename>名称,命令执行后,会在~/.ssh目录下创建指定的公钥/私钥对:文件<filename>是私钥,文件<filename.pub>是公钥。

         将新生的公钥追加到服务器主机登陆用户主名录下的.ssh/authorized_keys文件中,就可以使用新创建的公钥建立到远程主机<server><user>账户的无口令登陆。

         现在客服端存在多个公钥/私钥对,那么当执行下面的ssh登陆指令时,用到的是哪个公钥呢?

$ ssh <user>@<server>

         当然是默认公钥~/.ssh/id_rsa.pub。那么如何用新建的公钥连接server呢?

         SSH的客户端配置文件~/.ssh/config可以通过创建主机别名,在连接主机时选择使用特定的公钥。例如~/.ssh/config文件中的下列配置:

host hr

  user root

  hostname 192.168.1.101

  port 22

  identityfile ~/.ssh/id_rsa

 

host hj

  user root

  hostname 192.168.1.101

  port 22

  identityfile ~/.ssh/jiajia

         可以使用下面的SSH登陆命令,

$ ssh hr    // 相当于用私钥id_rsa文件登陆root@192.168.1.101服务器

$ ssh hj    // 相当于用私钥jiajia文件登陆root@192.168.1.101服务器

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 感冒了喉咙有痰怎么办 咽喉有异物感是怎么办 老感觉喉咙有痰怎么办 感冒有痰怎么办最有效 感冒快好了有痰怎么办 喉咙里一直有痰怎么办 一到晚上就咳嗽怎么办 1岁宝宝咳嗽痰多怎么办 3岁宝宝咳嗽痰多怎么办 六岁儿童咳嗽有痰怎么办 很多白痰在喉咙怎么办 我喉咙总是有痰怎么办 喉咙老感觉有痰怎么办 喉咙痒老是有痰怎么办 抽烟多了嗓子疼怎么办 抽烟多了老咳嗽怎么办 抽烟抽多了咳嗽怎么办 嗓子咳出异物臭怎么办 鼻子有鼻涕喉咙有痰怎么办 怀孕39周感冒了怎么办 一口痰卡在喉咙怎么办 鼻塞黄鼻涕黄痰怎么办 小孩咳嗽流黄鼻涕怎么办 小孩鼻塞怎么办最简单方法 有黄鼻涕黄痰怎么办 咳嗽有泡沫白痰怎么办 痰多咳嗽老不好怎么办 5岁儿童咳嗽有痰怎么办 感冒后一直有痰怎么办 感冒吐绿色的痰怎么办 孕妇咳嗽有痰怎么办啊 没结婚的人死了怎么办 金花鼠尾巴断了怎么办 辞职交了不批怎么办 离职了又想回去怎么办 想辞职领导不批怎么办 急辞职领导不批怎么办 她生气不理我了怎么办 分手了之前的钱怎么办 结婚后老公变了怎么办 我不小心出轨了怎么办