文章目录

  • 一、新用户访问
    • 2.1 创建用户
    • 2.2 允许新用户`ssh`访问
    • 2.3 远程测试连接
    • 2.4 使用 `ssh key` 访问
      • 2.4.1 标准用户和管理用户
      • 2.4.2 重启`sshd`服务
      • 2.4.3 禁用用户名密码登录
      • 2.4.4 注意事项
  • 二、日志查看
  • 三、常见问题
    • 配置 `ssh key` 登录后,无法远程登录
  • 四、参考链接

一、新用户访问

【避免使用 sshd 等与服务内置账户冲突的名称】

一般情况下,为了系统的访问安全,不会直接使用系统管理员账户进行远程访问。

2.1 创建用户

管理员权限,执行 cmd ,执行用户添加指令,创建用户为标准用户,具体如下:

# net user username password /add
>net user ggcyuser ggcyadmin@@ /add
命令成功完成。
>net user ggcyuser
用户名                 ggcyuser
全名
注释
用户的注释
国家/地区代码          000 (系统默认值)
帐户启用               Yes
帐户到期               从不上次设置密码           2021/10/5 16:54:17
密码到期               2021/11/16 16:54:17
密码可更改             2021/10/5 16:54:17
需要密码               Yes
用户可以更改密码       Yes允许的工作站           All
登录脚本
用户配置文件
主目录
上次登录               2021/10/6 2:04:23可允许的登录小时数     All本地组成员             *Users
全局组成员             *None
命令成功完成。

2.2 允许新用户ssh访问

以管理员身份编辑%programdata%\ssh\sshd_config文件尾部添加配置AllowUsers配置,相关资料请查看官方文档:https://github.com/PowerShell/Win32-OpenSSH/wiki/sshd_config以及微软官方文档:https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_server_configuration,以下配置普通用户ggcyuser能够进行ssh远程访问:

# Example of overriding settings on a per-user basis
#Match User anoncvs
#   AllowTcpForwarding no
#   PermitTTY no
#   ForceCommand cvs serverAllowUsers ggcyuser

添加完成后,重新启动sshd服务。

2.3 远程测试连接

端口为默认22时,端口参数配置可以忽略,操作如下:

> ssh -p [port] [username]@[ip]
Connecting to [ip]:[port]...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.Microsoft Windows [版本 10.0.19043.1165]
(c) Microsoft Corporation。保留所有权利。
[username]@[主机名称] C:\Users\[username]>

有的时候远程访问遇到问题时,可以通过查看连接输出日志进行信息排查,输出结果如下:

> ssh -p [port] [username]@[ip] -v
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

2.4 使用 ssh key 访问

执行ssh-keygen指令,依据实际需求生成公钥和私钥,加密算法为rsa,同时有加密密钥,此处不设置则为空,虽然这样会不安全,建议生产环境中不要使用空密码,确认路径无误后,无脑下一步。

生成公钥私钥:

>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\[username]/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\[username]/.ssh/id_rsa.
Your public key has been saved in C:\Users\[username]/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nr3jdbOpRaSZ2FOgqtOF68YMG5WvEuJEVF+jn7cbUqE [username]@[主机名称]
The key's randomart image is:
+---[RSA 3072]----+
|     ..   o .    |
|    .  . o o .   |
|   .    o.. . o  |
|    .   o+ = B   |
|   .   .S.E O .  |
|    o ++ =.o +   |
|   o .oB=.o + +  |
|    . oo= .+ = + |
|       o..o.o.o  |
+----[SHA256]-----+

文件目录如下,带*.pub为公钥,反之为私钥:

>dir
2021/08/20  18:38    <DIR>          .
2021/08/20  18:38    <DIR>          ..
2021/08/20  18:38             2,610 id_rsa
2021/08/20  18:38               579 id_rsa.pub2 File(s)          3,189 bytes2 Dir(s)  29,674,840,064 bytes free

2.4.1 标准用户和管理用户

对于标准用户管理用户,两者对应的公钥在sshd所在服务端存储位置不同。

若账户为标准用户C:\Users\[username]/.ssh/目录下创建一个无后缀文件authorized_keys,用于存放生成的公钥内容;

若账户为管理用户C:\Users\[username]/.ssh/目录下创建一个无后缀文件administrators_authorized_keys中,

笔者以标准用户为例,私钥本地保留,用于登录远程访问sshd服务使用。

2.4.2 重启sshd服务

使用xshell进行测试,选择方法为Public Key用户名和远程中生成账户名ggcyuser一致,引入本地对应私钥,配置如下:

测试连接登录

2.4.3 禁用用户名密码登录

修改sshd_config中配置,启动证书认证,重启服务再次测试

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10# 启用证书认证
PubkeyAuthentication yes
# 禁用密码远程登录
PasswordAuthentication no# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

切换为用户名密码登录,提示用户名用户密码登录,表示登录已经禁用,

提示SSH用户身份验证,反馈如下:

2.4.4 注意事项

远程访问需要,开启防火墙对应的sshd的访问默认端口22,尝试配置是否有效,最好是,一段步骤,一段测试,

二、日志查看

默认情况下,OpenSSH 的日志是输出到系统日志中,可以通过 事件查看器-应用程序和服务日志中查看,对应的日志。

如果需要基于文件的日志记录,设置 sshd_config 文件中 SyslogFacility LOCAL0,日志文件将输入到 %programdata%\ssh\logs 文件目录下。

三、常见问题

配置 ssh key 登录后,无法远程登录

使用 xshell提示当前密钥为注册到服务器中 ,实际原因就笔者进行不断尝试和和查看日志可以发现,问题出在公钥服务端保留文件 authorized_keys 对应访问权限问题中,排查方式为开启,sshd 的本地日志输出而不是使用默认日志系统输出,修改 sshd_config 文件中的配置 SyslogFacility LOCAL0,同时为了进一步细化输出内容,将日志的输出等级 LogLevel,调整为 Debug3,日志输出文件在 %programdata%\ssh\logs 目录下。

异常输出如下:

18900 2021-10-06 01:55:28.475 debug3: mm_answer_keyallowed: key_from_blob: 0000026DC6958130
18900 2021-10-06 01:55:28.475 debug1: trying public key file C:\\Users\\ggcyuser\\.ssh/authorized_keys
18900 2021-10-06 01:55:28.476 debug3: Bad permissions. Try removing permissions for user: S-1-5-21-1185597859-3763637221-3021501666-1006 on file C:/Users/ggcyuser/.ssh/authorized_keys.
18900 2021-10-06 01:55:28.476 Authentication refused.
18900 2021-10-06 01:55:28.476 debug3: mm_answer_keyallowed: publickey authentication test: RSA key is not allowed
18900 2021-10-06 01:55:28.476 Failed publickey for ggcyuser from 127.0.0.1 port 49820 ssh2: RSA SHA256:eEUla5p9V1RSHNCTP0dItkf6XRfnnsJObR3saOdkDv0
18900 2021-10-06 01:55:28.476 debug3: mm_request_send entering: type 23

核心问题出在 Bad permissions. Try removing permissions for user,思考之后,考虑是否为文件访问权限问题,于是将多余用户权限进行删除 sshd,删除后,再次使用 xshell 访问,将不再提示上述问题,远程能够访问成功。

正常输出如下:

2300 2021-10-06 01:43:28.775 debug3: mm_answer_keyallowed: key_from_blob: 0000016A572D2450
2300 2021-10-06 01:43:28.775 debug1: trying public key file C:\\Users\\ggcyuser\\.ssh/authorized_keys
2300 2021-10-06 01:43:28.775 debug1: C:\\Users\\ggcyuser\\.ssh/authorized_keys:1: matching key found: RSA SHA256:eEUla5p9V1RSHNCTP0dItkf6XRfnnsJObR3saOdkDv0
2300 2021-10-06 01:43:28.775 debug1: C:\\Users\\ggcyuser\\.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
2300 2021-10-06 01:43:28.775 Accepted key RSA SHA256:eEUla5p9V1RSHNCTP0dItkf6XRfnnsJObR3saOdkDv0 found at C:\\Users\\ggcyuser\\.ssh/authorized_keys:1
2300 2021-10-06 01:43:28.775 debug3: mm_answer_keyallowed: publickey authentication test: RSA key is allowed

上述问题,引发笔者思考的是,Windows 中,对于权限的问题,往往不像 Linux 那般明显,需要进一步跟踪程序集,运行时的具体运行输出,可见一个系统中,一个成熟的日志输出,给用户和排查问题带来的好处,能够为迷惑者,指明方向。

四、参考链接

[1] OpenSSH For Windows官方文档:

https://github.com/PowerShell/Win32-OpenSSH/wiki/sshd_config

[2]微软官方文档:

https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_server_configuration

OpenSSH之Windows账户访问操作相关推荐

  1. Linux系统下授权MySQL账户访问指定数据库和数据库操作

    Linux系统下授权MySQL账户访问指定数据库 需求: 1.在MySQL中创建数据库mydata 2.新建MySQL账户admin密码123456 3.赋予账户admin对数据库mydata具有完全 ...

  2. mysqlclient==1.3.7对应mysql版本_Python通过MySQLdb访问操作MySQL数据库

    前言 Python支持通过多种方式访问MySQL数据库.可能有些刚入门的朋友们对Python访问MySQL数据库还不是很熟悉,故计划对Python访问MySQL数据库的这几种方式分别作一介绍. 系列第 ...

  3. 授权MySQL账户访问指定数据库

    需求: 1.在MySQL中创建数据库mydata 2.新建MySQL账户admin密码123456 3.赋予账户admin对数据库mydata具有完全操作权限 操作如下: 1.登录MySQL数据库 m ...

  4. 无法访问计算机请检查名称的拼写,windows无法访问 请检查名称的拼写… 错误代码:0x80004005和0x80070035和 0x800704cf...

    昨天下午到今天早上真是日了够了,简简单单的要访问一个局域网共享文件夹出幺蛾子,别人的电脑没事,就我的电脑有事,大家都是win7系统,废话少说,上解决思路. 首先在地址栏中或者再开始中输入:\\172. ...

  5. windows无法访问 请检查名称的拼写… 错误代码:0x80004005和0x80070035和 0x800704cf

    昨天下午到今天早上真是日了够了,简简单单的要访问一个局域网共享文件夹出幺蛾子,别人的电脑没事,就我的电脑有事,大家都是win7系统,废话少说,上解决思路. 首先在地址栏中或者再开始中输入:\\172. ...

  6. 无法访问指定计算机,windows无法访问指定设备如何解决

    解决Windows无法访问指定设备的方法很简单,一般导致此情况的原因是没有开启超级管理员权限,或者程序设备单独禁用了一些权限.知道原因后我们就来瞧瞧Windows无法访问指定设备的解决方法 Windo ...

  7. xp系统无法连接到指定计算机名,winxp系统提示windows无法访问指定设备路径或文件如何解决...

    最近有很多winxp用户在右击我的电脑属性时,出现提示"windows无法访问指定设备路径或文件",这让用户很苦恼.那么遇到该问题时要如何解决呢?针对这一问题,小编今天就来为大家介 ...

  8. windows无法访问指定设备路径或文件怎么办?2个解决方案

    有时候Win10电脑打不开程序或文件,windows无法访问指定设备路径或文件该怎么办?原因是什么呢?一般导致这种情况的出现,大多是因为我们的电脑缺乏相应的查看权限,我们只需要通过赋予权限就可以解决这 ...

  9. 笔记本点开计算机显示无法访问,电脑提示windows无法访问指定设备怎么办 提示windows无法访问指定设备解决方法...

    电脑提示windows无法访问指定设备怎么办? 有时候我们使用电脑时会出现一个提示,那就是windows无法访问指定设备.这是怎么回事呢?为什么系统不能打开某个指定文件呢? 下面,我们就来看看系统不能 ...

最新文章

  1. 计算机金融交叉学科考研,22考研:交叉学科可能成为新选择!它有哪些优势?
  2. 年薪80万技术专家,面试通过后,被发现简历造假!合并8年前多段工作!惨遭警告和淘汰!...
  3. python 基础命令-详解python常用命令行选项与环境变量
  4. JavaScript设计模式学习——builder pattern(建造者模式)
  5. BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)
  6. F - Monkey Banana Problem
  7. AngularJS快速入门指南04:指令
  8. cap理论具体含义_分布式事务的CAP理论
  9. 工业交换机的单模和多模能否互相替代?
  10. PHPcms框架的Webshell
  11. java插入排序算法实现
  12. 【Oracle】DBMS_STATS.GATHER_TABLE_STATS分析表
  13. 常见Web安全漏洞及防范
  14. [BZOJ2850]巧克力王国
  15. python3.9出了吗_Python 3.9正式版,新特性提前一睹为快
  16. Partition does not end on cylinder boundary
  17. 主要国家和地区货币代码表
  18. 写在博士旅程之前|博士第一年|博士第三年|博士第四年
  19. Doom3证明了“保持简单”有效。
  20. C++一周学习总结(2021/05/03)

热门文章

  1. 263.Ugly Number||202 happy number||476 Number Complement||136 Single Number
  2. Linux监控服务之zabbix
  3. 虚拟机如何安装优麒麟19.10
  4. java毕业设计图书借阅管理系统mybatis+源码+调试部署+系统+数据库+lw
  5. Ubuntu系统入门
  6. Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead.
  7. 反垄断法正确实施的三大关键点
  8. npm ERR! nested aliases not supported 报错原因
  9. 阿里云播放器AliyunPlayer的走马灯组件的位置
  10. CentOS7创建普通用户