在Windons子系统ubuntu中安装ssh(保姆级教程)

2023-11-18

1.什么是ssh?

SSH(Secure Shell)是一种用于远程登录和安全文件传输的网络协议。SSH服务是在计算机上运行的服务程序,它允许用户通过网络安全地远程访问计算机并执行各种操作。

以下是关于SSH服务的一些重要信息:

  1. 远程登录:SSH服务允许用户通过SSH客户端(如OpenSSH、PuTTY等)远程登录到SSH服务器所在的计算机。远程登录可以在命令行界面上执行命令和操作。

  2. 安全传输:SSH服务提供了加密和安全的数据传输通道,以保护远程会话中的数据的机密性和完整性。这意味着通过SSH连接传输的数据是加密的,无法被中间人窃取或篡改。

  3. 密钥身份验证:SSH服务支持密钥身份验证,这是一种更安全的身份验证方法。用户可以生成公钥和私钥对,并将公钥添加到SSH服务器上,从而实现无需密码的身份验证。

  4. 文件传输:SSH服务还提供了安全的文件传输功能,可以通过SSH协议进行文件上传和下载。这对于远程复制文件、备份数据等操作非常有用。

在大多数Linux和Unix系统中,SSH服务通常使用OpenSSH来实现。为了使用SSH服务,你需要在SSH服务器上安装并启动SSH服务。具体操作可以参考相关操作系统的文档和指南。

2.安装ssh

a.设置root密码:sudo passwd root(如果设置好了可以跳过)

b.首先打开我们的Ubuntu并且键入以下命令:

1 安装服务程序:sudo apt install openssh-server

2 安装客户端程序:sudo apt install openssh-client

e806a09471dd4791b0d764fce3ba0801.png

 如果中途出现(Y/N)键入Y回车即可

3.配置ssh

a.安装结束后在/ect/ssh/ssh_config中修改配置文件:

 d2708f14c37848e28eecfc56fff5c57c.png

 b.进入之后键入i进入编辑模式,此时左下角出现--INSERT--

2be5ea4f078945fab60790450b68da59.png

 c.将我们的需要修改的内容复制好,然后右键鼠标粘贴在空白位置即可

LoginGraceTime 2m
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem	sftp	/usr/lib/openssh/sftp-server

解释如下

LoginGraceTime 2m:在登录成功之前,允许的登录时长限制。在这个示例中,设置为2分钟。
PermitRootLogin yes:允许root用户通过SSH进行远程登录。请注意,为了安全起见,建议将此选项设置为 "no",以防止未经授权的访问。
PubkeyAuthentication yes:启用公钥身份验证。允许用户使用密钥对进行身份验证,而不是使用密码。
PasswordAuthentication yes:启用密码身份验证。允许用户使用密码进行身份验证。
ChallengeResponseAuthentication no:禁用挑战-响应身份验证。挑战-响应身份验证通常与PAM模块一起使用,允许使用额外的身份验证方法(如OTP、二次因素等)。
UsePAM yes:启用PAM(Pluggable Authentication Modules)身份验证。PAM是用于身份验证和帐户管理的模块化系统。
X11Forwarding yes:启用X11转发。允许在SSH会话中转发X11图形窗口。
PrintMotd no:禁用在登录时打印MOTD(Message of the Day)消息。MOTD通常包含系统信息和公告。
AcceptEnv LANG LC_*:允许SSH客户端传递语言环境变量(如LANG、LC_ALL等)到SSH会话。
Subsystem sftp /usr/lib/openssh/sftp-server:配置用于SFTP(SSH文件传输协议)的子系统路径。

 6ee277b7ba9b4ee7b2f9c7583c712889.png

 按下esc退出编辑模式;然后按住shift+':'进入命令模式,键入w! 即可保存;最后按ctrl+z退出文件f7421d9b367841108996256fb0ec1d71.png

 4. 启动服务

键入:sudo service ssh start

ca0cc877bb49448396e5d0763bb1ccc9.png

出现红框所示表示启动成功

 112e361863b54253a1a55d2dc8e9711c.png

 5.设置开机自启动

a.建立一个bat文件

创建一个txt文件,将命令:

C:\Windows\System32\bash.exe -c "sudo service ssh start"写入,然后把尾椎改成.bat

b.将.bat文件放入文件夹:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

c.配置sudo免密码:

在etc文件目录下输入 vim sudoers

5bf78a68720b4d5bbee34f3c37d789d5.png

键入i 进入编辑模式输入:

username ALL=(ALL) NOPASSWD: /usr/sbin/service ssh start;

username填入你的用户名

shift+: 进入命令模式;按esc推出编辑模式;键入w!(强制保存);最后键入ctrl+z返回:

94cb01042e684516aedb4aead6d71d9c.png

 开机自动弹出命令框并且免密码启动ssh服务

到此我们的ssh就部署成功了!
 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Windons子系统ubuntu中安装ssh(保姆级教程) 的相关文章

  • 我可以在本地使用 RSA 密钥测试身份验证吗?

    有没有办法在本地检查您是否为 RSA 密钥提供了正确的密码 最近 我在将一些提交推送到 github 时遇到了麻烦 因为推送提示输入密码 然后身份验证失败 我验证了 github 具有正确的公钥id rsa文件在我的 ssh目录 并且我验证
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 使用 ChannelExec 的命令未执行 - Jsch

    我正在使用 Jsch 在服务器中创建一个文件并执行一些命令 对于文件创建 它工作正常 但是对于命令执行 则不然 它保持状态 1 仍在处理它 并永远保持该状态 这种情况发生在 shell 执行或我尝试成为 root 时 请按照以下方法操作 p
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • 将 PDF 转换为 600dpi 的 TIFF 和 jpg 96 dpi

    我想使用 ImageMagick 从 Python 脚本将 pdf 转换为 600 dpi 的 tiff 和 96 dpi 的 jpg 我使用 imagemagick 命令行完成了这项任务 但我想使用python中的Imagemagick将
  • 卷曲选项 -:未知

    我运行此命令在 ubuntu 18 04 上安装更新版本的 nodejs curl sL https deb nodesource com setup 12 x sudo E bash 我收到错误 curl 选项 未知 我在多个系统上尝试过
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • Ubuntu 上的 Vim:文本渲染错误,奇怪地重复和消失

    不久前我在 ubuntu 12 04 上安装了 vim 有时 当我在代码上运行光标 使用键盘 而不是鼠标 时 文本会消失 就好像渲染字符时出现问题一样 当我再次运行光标时 它通常会重新出现 这似乎是随机发生的 但通常足以让人恼火 为了更清楚
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute

随机推荐