SSH配置总结

来源:互联网 发布:大数据对行业的影响 编辑:程序博客网 时间:2024/06/06 17:15
SSH概述

传统的远程登录(telnet,rlogin)是不安全的,它们在网络上用明文传输口令和数据,SSH则是安全的。OpenSSH提供两种级别的验证方式:
  • 基于口令的安全验证:知道服务器的帐号密码即可远程登录,口令和数据在传输过程中都会被加密。
  • 基于密钥的安全验证:此时需要在创建一对密钥,把公有密钥放到远程服务器上自己的宿主目录中,而私有密钥则由自己保存。

Ubuntu服务端配置SSH

1. 软件安装
检查软件是否安装:
$sudo apt-cache policy openssh-client openssh-server
安装软件:
$sudo apt-get install openssh-server     //服务端
$sudo apt-get install openssh-client     //客户端(ubuntu10.10以安装)
该软件包中还携带了一些其他的SSH工具,如ssh-keygen用来生成私钥/公钥对,scp可以通过ssh远程复制文件,stfp可以实现ftp传输文件。

2. 配置文件
$/etc/ssh$ ls -l
total 148
-rw-r--r-- 1 root root 125749 2010-09-15 02:34 moduli  //ssh服务器的Diffie-Helllman密钥文件
-rw-r--r-- 1 root root   1669 2010-09-15 02:34 ssh_config  //ssh客户端配置文件
-rw-r--r-- 1 root root   2453 2011-03-09 14:09 sshd_config  //ssh服务器端配置文件
-rw------- 1 root root    672 2011-03-09 14:09 ssh_host_dsa_key  //ssh服务器端dsa算法私钥
-rw-r--r-- 1 root root    613 2011-03-09 14:09 ssh_host_dsa_key.pub  //ssh服务器dsa公钥
-rw------- 1 root root   1675 2011-03-09 14:09 ssh_host_rsa_key  //ssh服务器rsa算法私钥
-rw-r--r-- 1 root root    405 2011-03-09 14:09 ssh_host_rsa_key.pub  /ssh服务器rsa算法公钥

根据需要修改、确认sshd_config配置文件:
  • 启用RSA加密方式:RSAAuthentication yes
  • 启用公钥配对认证方式:PubkeyAuthentication yes
  • 设置公匙文件路径:AuthorizedKeysFile %h/.ssh/<authorized_keys>
  • (选择性)密码登陆方式:PasswordAuthentication <yes | no>    #禁止密码验证登录,如果启用的话,OpenSSH的 RSA认证登录就失去意义
  • (选择性)root远程登录:PermitRootLogin <yes | no>

4. 获取需要登录到此服务器的ssh公匙
$mkdir .ssh     #在需要开启ssh连接的用户目录下建立 .ssh目录
$chmod 700 .ssh
$cd .ssh
$mv <from_client_xxx.pub> <authorized_keys>     #名称需要和配置文件中设置一致。此外如果采用的格式不是openssh,需要执行ssh-keygen -i -f Identity.pub >>authorized_keys进行格式转换
$chmod 644 authorized_keys     #更改公匙文件权限

3. 常用命令
$sudo /etc/init.d/ssh <start | stop | restart | status>

4. scp命令使用
$scp [sourceIP]:<sourceFile> [tergetIP]:<targetFile>
其中第一个参数是源文件,第二个是目标文件,当参数是ssh登录到的主机时可以省略ip或者主机名。当两个参数是两台远程主机的ip时,可以实现两台远程主机之间的文件传输。
example: scp /home/zone/1.sh 192.168.0.143:/home/erpang,从服务器下载1.sh到143主机的erpang目录下。


Ubuntu客户端配置SSH登录

1. 基于口令的认证
ssh 192.168.0.143/主机名(server ip 192.168.0.143)
初次登录服务器时会出现许多信息,这是因为ssh不能识别这台主机,输入yes后将会把这台服务器的信息写入~/.ssh/known_hosts文件,下次登录时就不会出现这样的信息。

2. 基于密钥的认证
假设生成的私钥为~/.ssh/id_rsa,公钥为~/.ssh/id_rsa.pub,需要将公钥复制到远程服务器上,这样当登录server时,client会向server提出请求,用私钥认证,server收到请求后,寻找公钥进行身份认证。
  1. 生成密匙:ssh-keygen [-t <rsa | dsa>] [-C "comment message"],默认为rsa。
  2. 拷贝公匙:scp id_rsa.pub 192.168.0.143:.ssh/authorized_keys,确保权限为644。
  3. 登录:ssh 192.168.0.143 如果执行ssh-keygen过程中设置了私钥密码,则登录过程中会要求输入私钥密码,否则直接登录完成。

SecureCRT配置SSH登录

1. 生成公匙/私匙对

使用SecureCRT的工具->创建公钥 ,加密算法选择RSA,由服务器端sshd配置文件中选择的算法决定。
私匙密码可以不设置,如果设置了,当登录的时候会要求输入此密码。comment信息,可以随意设置。
密匙长度默认为1024位,可以不更改。密匙格式选择OpenSSH。生成的xxx.pub为公匙,xxx为私匙。

2. 上传公匙到服务器
上传公匙到需要ssh登录的用户主目录下.ssh/文件夹中,注意一定要以ASCII格式上传。
在服务器端添加此公匙,并重启sshd服务。完成后,在客户端进行登陆测试,输入密钥通行短语(如果设置了),看看是否登录成功,如果不成功从下面几个方面检查:
  • 权限是否是644
  • 主机地址是否正确
  • 密匙格式是否为OpenSSH,如果不是需要转换格式。密匙加密方式是否和服务端配置一致,RSA/DSA


GitHub配置SSH登录

Https和SSH方式Clone项目的区别:
  • 前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
  • https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,如果配置SSH key的时候设置了密码,则需要输入密码的,否则不需要输入密码。

Github中添加 SSH key 步骤:
1. 检查是否已经存在SSH key 
在git Bash 中,输入如下命令:
$ cd ~/.ssh$ ls
检查是否已经存在密匙文件,例如 id_rsa.pub 或 id_dsa.pub 文件。如果文件已经存在,那么可以跳过步骤2,直接进入步骤3。

2. 创建 SSH key 
$ ssh-keygen -t rsa -C "your_email@example.com"
代码参数含义:
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。
以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码,如:
Generating public/private rsa key pair.# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
当然,也可以不输入文件名,使用默认文件名(推荐),那么就会生成 id_rsa 和 id_rsa.pub 两个秘钥文件。 
接着又会提示输入两次密码(该密码是push文件的时候要输入的密码,而不是github管理者的密码),
当然,也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提交到github上了,如:
Enter passphrase (empty for no passphrase): # Enter same passphrase again:
接下来,会显示如下代码提示:
Your identification has been saved in /c/Users/you/.ssh/id_rsa.# Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.# The key fingerprint is:# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
当看到上面这段代码时,说明 SSH key 已经创建成功,只需要添加到github的SSH key上就可以了。

3. 添加 SSH public key 到 github 中
首先拷贝 id_rsa.pub 文件的内容,可以用编辑器打开文件复制,也可以用git命令复制该文件的内容:

$ clip < ~/.ssh/id_rsa.pub
然后登录github账号,进入设置(Account Settings)-->SSH key 菜单页面,点击 Add SSH key 按钮添加一个 SSH key 。把复制的 SSH key 代码粘贴到 key 所对应的输入框中,记得 SSH key 代码的前后不要留有空格或者回车。Title 所对应的输入框可以输入一个该 SSH key 显示在 github 上的一个别名,默认的会使用你的邮件名称。


4. 测试一下该SSH key
$ ssh -T git@github.com
输入以上命令后,会有一段警告信息:
The authenticity of host 'github.com (207.97.227.239)' can't be established.# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.# Are you sure you want to continue connecting (yes/no)?
这是正常的,输入 yes 回车既可。如果创建 SSH key 的时候设置了密码,接下来就会提示输入密码:
Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':
如果密码输错了,会再要求输入,直到正确为止。注意,输入密码时如果输错一个字就会不正确,使用删除键是无法更正的。
密码正确后会看到下面这段话:
Hi username! You've successfully authenticated, but GitHub does not# provide shell access.

如果用户名是正确的,说明已经成功设置SSH密钥。如果看到“access denied”,则表示拒绝访问,那么就需要使用 https 去访问,而不是 SSH 。



参考与阅读

1. sshd服务基本配置和使用



0 0
原创粉丝点击