[SSH服务]——一个SSH无密码登陆实验
实验拓扑图

实验描述
机房内有两台服务器:
(1)B服务器10.0.10.158,充当Web服务器,有普通用户user_00
(2)C服务器10.0.10.191,充当Mysql服务器,有普通用户user_00
有服务器A 10.0.10.198,供管理员平常使用来管理机房内的机器。为方便起见,所以要求做到:
(1)A服务器能SSH远程登录(以user_00的身份)到B和C,且实现无密码登陆;
(2)远程登录后,user_00可以直接sudo到root而不需要密码。
SSH工作原理详解可参考我的博文:《ssh详解》
在服务器B:10.0.10.158上的操作
# 创建普通用户user_00
[root@lyj1 .ssh]# useradd user_00
[root@lyj1 .ssh]# passwd user_00
# 编辑SSH配置文件
[root@lyj1 .ssh]# vim /etc/ssh/sshd_config
Port 22
PermitRootLogin no #禁止以root用户登录
PubkeyAuthentication yes #允许使用Key进行登录
# 重启SSH服务使配置更改生效
[root@lyj1 .ssh]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
在服务器C:10.0.10.191上的操作
# 创建普通用户user_00
[root@lyj2 .ssh]# useradd user_00
[root@lyj2 .ssh]# passwd user_00
# 编辑SSH配置文件
[root@lyj2 .ssh]# vim /etc/ssh/sshd_config
Port 22
PermitRootLogin no #禁止以root用户登录
PubkeyAuthentication yes #允许使用Key进行登录
# 重启SSH服务使配置更改生效
[root@lyj2 .ssh]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
在服务器A:10.0.10.198上的操作
# 切换到user_00的家目录/home/user_00下
[root@localhost ~]# su - user_00
[user_00@localhost ~]$ pwd
/home/user_00
# 生成公钥和私钥
[user_00@localhost ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_00/.ssh/id_rsa):
Created directory '/home/user_00/.ssh'. #在用户的家目录/home/user_00下创建.ssh目录
Enter passphrase (empty for no passphrase): #要求输入加密短语(可以不输)
Enter same passphrase again: #再次输入加密短语
Your identification has been saved in /home/user_00/.ssh/id_rsa. #生成了私钥存放在用户家目录下的.ssh/id_rsa
Your public key has been saved in /home/user_00/.ssh/id_rsa.pub. #生成了公钥存放在用户家目录下的.ssh/id_rsa.pub
The key fingerprint is:
7f:02:95:d2:12:c9:41:27:c8:50:66:aa:5c:68:69:73 user_00@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| .+++=o. |
| o +o o= . |
| * E o + |
| + = + |
| o S |
| o |
| o . |
| o |
| |
+-----------------+
[user_00@localhost ~]$ pwd
/home/user_00
[user_00@localhost ~]$ ls ./.ssh/ #家目录/home/user_00下有了.ssh目录,该目录下也产生了公钥和私钥文件
id_rsa id_rsa.pub [user_00@localhost ~]$ cd .ssh/
[user_00@localhost .ssh]$ cat id_rsa.pub > authorized_keys #将公钥复制一份并命名为authorized_keys
[user_00@localhost .ssh]$ chmod 644 authorized_keys #将authorized_keys的权限改为644 #这个权限一定要改!
[user_00@localhost .ssh]$ ll
总用量 12
-rw-r--r-- 1 user_00 user_00 411 6月 23 19:07 authorized_keys
-rw------- 1 user_00 user_00 1743 6月 23 19:02 id_rsa
-rw-r--r-- 1 user_00 user_00 411 6月 23 19:02 id_rsa.pub
为了实现A能无密码SSH登录到B和C,则必须使得B和C信任A,即让B和C拥有A的公钥。
方法是将A服务器上的/home/user_00/.ssh/authorized这个公钥,拷贝到B和C上各自的/home/user_00/.ssh目录下去。
要注意拷贝过去之后.ssh目录和authorized文件的属主属组和权限(否则很容易出错)。


这个时候A可以以user_00用户的身份无密码登陆到B和C了,但因为user_00是普通用户,所以sudo到root用户还是需要密码:
[user_00@localhost ~]$ ssh 10.0.10.191
Last login: Thu Nov 26 02:10:22 2009 from 10.0.10.198
[user_00@localhost ~]$ ssh 10.0.10.191
Last login: Thu Nov 26 02:56:53 2009
[user_00@lyj2 ~]$ sudo mkdir /test
[sudo] password for user_00:
为了实现user_00用户可以直接sudo到root用户,我们可以分别修改B和C上的/etc/sudoers文件,添加如下内容:

这样一来,user_00再sudo到root用户就不需要再输入密码了:
[user_00@localhost ~]$ ssh 10.0.10.191
Last login: Thu Nov 26 02:57:43 2009 from 10.0.10.198
[user_00@lyj2 ~]$ sudo mkdir /test2
[SSH服务]——一个SSH无密码登陆实验的更多相关文章
- [转载]Ubuntu下ssh服务的安装与登陆(ssh远程登陆)
转载地址:http://blog.csdn.net/zht666/article/details/9340633 Ubuntu默认并没有安装ssh服务,如果通过ssh远程连接到Ubuntu,需要自己手 ...
- [DHCP服务]——一个验证DHCP原理实验(VMware)
大致实验拓扑图 DHCP Server端的配置 1. 安装DHCP # yum -y install dhcp 2. 拷贝配置文件 # /dhcpd.conf.sample /etc/dhcp/dhc ...
- [SSH服务]——一些安全性配置和补充实验
SSH 安全性和配置 转载于 http://www.ibm.com/developerworks/cn/aix/library/au-sshsecurity/ 对于一些之前列举的代码示例,许多系统管理 ...
- SSH无密码登陆问题解决
转载 http://my.oschina.net/hunzi/blog/10687 安装好Cygwin后,SSH需要设置为无密码登陆, 首先查看是ssh还是ssh2:ls -l `which ssh` ...
- ssh服务、密钥登陆配置
环境内核信息: [root@zabbix-01 ~]# uname -a Linux lodboyedu-01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:2 ...
- Linux服务器开启ssh服务,实现ssh远程登陆!
最近在学linux,使用ssh远程登陆linux,记录下来! 首先进入/etc目录下,/etc目录存放的是一些配置文件,比如passwd等配置文件,要想使用ssh远程登陆,需要配置/etc/ssh/s ...
- docker中安装ssh服务
系统:Debian Docker 目标:在docker(debian系统)中安装ssh服务,实现远程登陆和控制docker 步骤: 初始状态:通过docker pull debian得到的一个debi ...
- [SSH服务]——SSH详解、常用的远程连接工具
在总结ssh原理前,我先做了一个ssh过程的实验 首先我搭建了这样一个实验环境: (1) SSH Server:10.0.10.198 (2) SSH Client:10.0.10.158 在Serv ...
- Linux中ssh介绍与ssh+key密钥登陆部署
环境内核信息: [root@zabbix- ~]# uname -a Linux zabbix- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86 ...
随机推荐
- linux进程状态
系统维护的时候难免会遇到进程的状态的查询和管理,到底什么是R,有的是S,有的还是S+呢?一直有些混沌的问题,今天细细的来总结一下: ps是用来报告系统中程序执行状况的命令这个是无可厚非的,linux进 ...
- c programming language ___ 5_2.c
#include <stdio.h> #include <ctype.h> #define BUG printf("here!bug!\n"); int g ...
- java 设计模式-代理
代理模式对其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式的思想 ...
- Jqgrid获取行id
//获取选中行(单行)的ID var id = $("#table").jqGrid('getGridParam','selrow'); //根据id获取行数据,返回的是列表 va ...
- C# 类型转换 Dictionary转Model类
/// <summary> /// 把Model转换为DataRow /// </summary> /// <typeparam name="T"&g ...
- kbengine mmo源码(完整服务端源码+资源+完整客户端源码)
本项目作为kbengine服务端引擎的客户端演示而写 更新kbengine插件库(https://github.com/kbengine/kbengine_unity3d_plugins): ...
- 如何循序渐进地学习Javascript
javascript入门太容易了,导致几乎人人随便看看就能上手,零基础的人学个三五天都能对外宣称自己掌握了js.可是真正掌握js是一件很难的事情.如果在初学一门语言的时候第一想到的是问别人,是很难取得 ...
- Windows系统错误代码大全
1 Microsoft Windows 系统错误代码简单分析: 0000 操作已成功完成.0001 错误的函数. 0002 系统找不到指定的文件. 0003 系统找不到指定的路径. 0004 系统无法 ...
- WinForm程序安装、发布流程
一 签名 所谓签名就是给应用程序一个身份,申请一个专利.签名的时候需要选择证书.就向我们上学一样,得奖了老师给你发个证书.如果不进行签名,杀毒软件会把你打包后的exe文件作为病毒处理. 签名的步骤: ...
- [leetcode]_Count and Say
题目:一开始没看懂, 后头经过WA发现 输出 的意义 是 出现的次数+值. 1 => 一个1 => 11 11 => 两个1 => 21 111=> 三个1 => ...