如何使用SSH登录服务器?
SSH全称是SecureShell,SSH是创建在应用层和传输层基础上的安全协议,采用端口为22,下面我来讲解一下如何使用putty工具来连接服务器:
工具/原料
putty
开有ssh服务的服务器
连接服务器
1、下载putty软件,网络搜索这个软件有很多下载的,当然也不一定是这款,也可以用其他同类软件连接:
2、打开软件之后,输入你连接服务器的ip地址,勾选ssh,端口22:
3、点击确定后,输入帐号和密码(密码不可见,只需要输入即可);完成后回车,看看有没有成功连接上;如果可以连接上,就可以执行命令了;如果连接不上,请检查是否密码错误或者服务器配置问题:
git push时候遇到这个错误的解决方法如下:
在mac上面搭建的一个git server,在mac上面新建git仓库然后客户端获取没有问题。但是在客户端新建一个git仓库然后push到服务器的时候出现git does not appear to be a git repository错误
mac os 利用ssh 搭建git server服务器方法:
ubuntu下输入:>ssh-keygen -t rsa 不设置密码。默认在~/ssh下会有一个文件~/ssh/id_rsapub;
目前假设的是,服务器端从来没有配置成为过SSH服务器,所以自然也没有ssh目录以及authorized_keys文件。所以ubuntu下输入:>ssh git@服务器机器名称 mkdir ssh>scp ~/ssh/id_rsapub git@yourOtherMachineName:ssh/authorized_key;
现在重新切回服务器机器工作:>cd /etc,>chmod 666 sshd_config,>vim sshd_config。编辑如下:修改#PermitRootLogin yes为PermitRootLogin no。移除下面几条语句前面的# #RSAAuthentication ye #PubkeyAuthentication y#AuthorizedKeysFile ssh/authorized_key #PasswordAuthentication no #PermitEmptyPasswords no 最后修改#UserPAM yes为UsePAM no;
注销ubuntu用户,并重新登陆,运行ssh git@服务器机器名称,不需要密码即可登陆。>ssh-keygen -t rsa,不设置密码。默认在~/ssh下会有一个文件~/ssh/id_rsapub;
由于第一台实验机器的操作,目前已不能直接采用用户名密码方式远程登陆。所以将id_rsapub拷贝到了服务器上,并将其内容加入到了服务器上的authorized_keys文件中,测试通过;
同osx的第二步,不同的是有时候windows系统对dns的解析有些问题,所以如果无法登陆,可以git@后面可以输入IP地址实验一下。
日常无论测试环境还是生产环境,在进行多台服务器(集群)安装配置的时候,经常需要对集群内服务器SSH访问做免密码设置。比如Hadoop、HBase等集群的安装配置,或者多台服务器为便于后续运维也需要做SSH免密配置。
结合近期搭建测试环境的过程,对如何快速给多台服务器做相互SSH访问免密配置做一个说明。主要分为几个步骤:修改主机名称、配置汇聚服务器的秘钥、汇聚其他服务器秘钥、拷贝汇聚秘钥文件、生成know_hosts文件、拷贝know_hosts文件。
1、集群规划
主机IP
主机名称
1014193101
dmz01
1014193102
dmz02
1014193103
inside01
1014193104
inside02
1014193105
inside03
1014193106
inside04
1014193107
inside05
1014193108
inside06
1014193109
inside07
1014193110
inside08
1014193111
inside09
1014193112
inside10
1014193113
inside11
1014193114
inside12
1014193115
inside13
1014193116
inside14
1014193117
inside15
1014193118
inside16
该集群共有18台服务器,划分为DMZ区2台,INSIDE区16台。主要用于web服务器和应用服务器、数据库、缓存等。为了部署应用、管理集群服务器方便,将18台服务器做SSH互访免密码配置。
2、修改主机名称
无论初装系统或云主机,其主机名称localhost或VM_75_173_centos都不容易进行区分服务器作用。所以便于安装、部署、维护方便,会重新修改主机名称hostname。
修改主机名称可以使用下面命令:
hostnamectl set-hostname inside01
使用上述命令修改主机名称后重新ssh登陆,即可看到主机名称已经修改。
3、配置汇聚服务器秘钥
此处所谓汇聚服务器就是选定集群中的一台服务器,然后其他服务器与其做SSH免密码信任。本文选定dmz01(1014193101)作为汇聚服务器。关系图如下所示:
其他服务器向dmz01做SSH登陆免密码信任配置。此处dmz01就是汇聚服务器。
配置汇聚服务器秘钥的命令如下所示:
[root@dmz01 ~]#ssh-keygen -t rsa
Generating public/private rsa key pair
Enter file in which to save the key (/root/ssh/id_rsa):[Enter键]
Enter passphrase (empty for no passphrase):[Enter键]
Enter same passphrase again:[Enter键]
Your identification has been saved in /root/ssh/id_rsa
Your public key has been saved in /root/ssh/id_rsapub
The key fingerprint is:
43:0d:08:18:ec:9e:d6:1f:ea:5f:04:30:0f:66:26:41 root@dmz01
The key's randomart image is:
+--[ RSA 2048]----+
| oE+O |
| o= = o |
| o |
| o |
| o S |
| + |
| o |
| |
| |
+------------------+
进入/root/ssh目录,拷贝生成authorized_keys文件,使用命令如下:
cat id_rsapub authorized_keys
结果如下所示:
[root@inside01 ssh]# ll
total 12
-rw-r--r-- 1 root root 395 Nov 12 16:25 authorized_keys
-rw------- 1 root root 1675 Nov 12 16:24 id_rsa
-rw-r--r-- 1 root root 395 Nov 12 16:24 id_rsapub
4、拷贝其他服务器秘钥
经过第3节配置汇聚服务器秘钥后,需要依次配置dmz02,inside01,,inside16等17台服务器的秘钥。方法同第三节命令。
配置完成其他17台服务器的秘钥后,需要将该17台服务器的秘钥复制拷贝到汇聚服务器dmz01上。其拷贝命令如下:
[root@dmz01 ssh]# ssh-copy-id -i dmz01
[root@inside01 ssh]# ssh-copy-id -i dmz01
依次将17台的秘钥汇聚拷贝到dmz01上。
5、拷贝汇聚秘钥文件
从汇聚服务器将汇聚的秘钥文件依次拷贝到其他17台服务器的/root/ssh目录下面,命令如下所示:
[root@dmz01 ssh]# scp authorized_keys dmz02:/root/ssh/
[root@dmz01 ssh]# scp authorized_keys inside01:/root/ssh/
[root@dmz01 ssh]# scp authorized_keys inside16:/root/ssh/
root@inside16's password:
authorized_keys 100% 7104 69KB/s 00:00
如上所示进行scp拷贝秘钥文件authorized_keys,该过程需要输入密码。
Ssh免密码验证:
[root@dmz01 ssh]# ssh dmz02
The authenticity of host 'dmz02 (1014168179)' can't be established
ECDSA key fingerprint is 22:49:b2:5c:7c:8f:73:56:89:29:8a:bd:56:49:74:66
Are you sure you want to continue connecting (yes/no) yes
Warning: Permanently added 'dmz02,1014168179' (ECDSA) to the list of known hosts
Last login: Sat Nov 12 17:19:19 2016 from 1014193186
由上面可以看出ssh dmz02,ssh登陆dmz02服务器时,没有再需要输入密码。但是提示需要将dmz02添加到dmz01的know hosts列表文件中。这样下次ssh访问dmz02就不会再提示需要加入know hosts列表了。
6、生成know_hosts文件
从汇聚服务器依次ssh其他17台服务器,经过前面的免密码设置。不需要再输入密码,但是都有加入know hosts列表的提示。
注意:为了把自己dmz01也加入到know hosts文件中,也需要[root@dmz01ssh]# ssh dmz01一下。
最后生成的know_hosts文件内容如下所示:
查看know_hosts文件行数:
[root@dmz01 ssh]# wc -l known_hosts
18 known_hosts
可以看出每个主机一行内容,表示dmz01知道了包括自己在内的所有18台服务器。
7、拷贝know_hosts文件
经过第六节生成18台服务器对dmz01的know host设置,将dmz01的/root/ssh/know_hosts文件scp拷贝到其他17台服务器上。
ssh免密码登陆验证:
[root@dmz01 ssh]# ssh inside10
Last login: Tue Nov 15 15:01:18 2016 from 1014193186
[root@inside10 ~]# ssh inside15
Last login: Sat Nov 12 17:52:29 2016 from 1014193186
[root@inside15 ~]# ssh dmz02
Last login: Sat Nov 12 20:05:59 2016 from 1014193186
[root@dmz02 ~]# ssh dmz01
Last login: Thu Nov 17 23:56:05 2016 from 2181089246
[root@dmz01 ~]# ssh inside15
Last login: Fri Nov 18 00:23:54 2016 from 10141114152
ssh免密码登陆顺序:dmz01inside10inside15dmz02dmz01inside15。
8、总结
本文主要涉及以下几个命令:
hostnamectl set-hostname inside01
ssh-keygen -t rsa
ssh-copy-id -i dmz01
这篇文章就介绍到这了,希望大家以后多多支持我们。
为了vps的安全,我开启了vps的ssh 秘钥登陆设置,通过goole搜索资料,操作成功。以下为操作记录。这里假设以root身份,vps的ip为19216801
第一步:产生秘钥即keys
基本上vps都是ssh密码登陆,首先是产生秘钥,分为公钥和私钥(public key和private key),公钥是放到vps上的,私钥放到自己这里,用于自己远程登录用的,产生秘钥方法有多种
第一种最简单,即通过vps自身产生秘钥
代码如下:
#ssh-keygen -t rsa //这里同是产生公钥和私钥
以下为输入命令后产生的输出:
代码如下:
Generating public/private rsa key pair
Enter file in which to save the key (/root/ssh/id_rsa): //这里表示秘钥存放地点,直接回车
Created directory '/root/ssh' //默认创建/root/ssh以保存秘钥
Enter passphrase (empty for no passphrase): //输入密钥密码,可以直接回车
Enter same passphrase again: //重复密钥密码,可以直接回车
Your identification has been saved in /root/ssh/id_rsa //提示公钥和私钥已经存放在/root /ssh/目录下
Your public key has been saved in /root/ssh/id_rsapub
#cd /root/ssh/
# ls
id_rsapub id_rsa //可以看到两个秘钥,将这两个保存好,将私钥拷贝到本地
#mv id_rsapub authorized_keys //将公钥改名为authorized_keys
#chmod 600 /root/ssh/authorized_keys //修改秘钥的权限,600表示属主有rw权限
当然如果本地自己是用linux则生成的秘钥,要将公钥拷贝到vps上,并修改名字和权限
#scp id_rsapub root@192168101:/root/ssh
#mv id_rsapub authorized_keys //这里是改名字,是在/root/ssh目录下操作
第二种方法
用xshell产生秘钥。这里强烈推荐xshell+xftp,十分好用,可以同是管理多个vps,支持多个shell窗口
第二步:用秘钥登陆
因为我们弄好后要测试ssh秘钥登陆,看是否设置成功,如果没成功还能密码登陆,所以修改后一定要测试下,对于vps提供商提供了console的,倒是 可以随意整,毕竟还有console可以用,倘若没有,建议先测试,我就是忘了添加另外一个管理员账户,而自己又禁止了root远程登登陆,导致所有客户 端都登陆不上,还好我有console,修改sshd_config配置,允许root远程登录,才搞定了,以下相当于登陆测试。
首先可以用winscp将公钥拷贝到远程的linux服务器上即vps,记得名字要改成authorized_keys
自己用私钥和vps上的公钥配对,配对成功就登陆了。
必须修改/etc/ssh/sshd_config 文件,将RSAAuthentication 和 PubkeyAuthentication 后面的值都改成yes ,保存
代码如下:
#/etc/initd/sshd restart //再重启sshd服务,我的是centos
用秘钥登陆也有很多种,看你喜欢用什么客户端了,
第一种,是用putty登陆,用putty登陆有点要注意的是要转换秘钥,大家可以参考军哥教程。特别要注意问题就是,putty官网的puttygen转换后的秘钥有问题,登陆时候会出现“Server refused our key”错误。
解决的办法是用winscp官网下载的winscp安装程序自带的puttygen来转换秘钥,就可以正常登陆了。
我的转载的putty,winscp教程,适合新手
第二种,用xshell登陆。我是用xshell,大家可以参考军哥教程
第三种,用linux登陆vps
代码如下:
#chmod 600 id_rsa //将本地的私钥改成rw权限
#ssh root@19216801 /root/id_rsa //id_rsa为私钥,根据自己的私钥路径写
三种登陆过程可能都会提示你填写秘钥密码,填上就可 以登录成功了。
测试ssh秘钥登陆成功后,就可以设置一些更安全的配置,如
代码如下:
PasswordAuthentication no //表示禁止密码口令登陆
permitrootlogin no //表示禁止root远程登录
0条评论