ssh远程访问windows系统下的jupyterlab

2024-05-03 10:52

本文主要是介绍ssh远程访问windows系统下的jupyterlab,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网上配置这一堆那一堆,特别乱,找了好久整理后发在这里

由于既想打游戏又想做深度学习,不舍得显卡性能白白消耗,这里尝试使用笔记本连接主机

OpenSSH 最初是为 Linux 系统开发的,现在也支持包括 Windows 和 macOS 在内的多种操作系统

服务端配置

首先在 设置 -> 系统 -> 添加可选功能 -> OpenSSH 服务器 中添加OpenSSH服务器

![[Pasted image 20240503013012.png]]

然后在window+r中输入powershell 打开 管理员shell,执行以下代码:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

没有安装会出现NotPresent,安装会出现Installed

![[Pasted image 20240503013258.png]]

  • 可选:设置 SSHD 服务自动启动
Set-Service -Name sshd -StartupType 'Automatic'

使用Windows + R快捷键打开「运行」对话框,输入powershell,然后按Ctrl + Shift + Enter以管理员权限打开 PowerShell

  • 启动 SSHD 服务
Start-Service sshd
  • 检查 SSH 服务器是否在侦听 22 端口
netstat -an | findstr /i ":22"
  • 确保 Windows Defender 防火墙允许 TCP 22 端口的入站连接
Get-NetFirewallRule -Name *OpenSSH-Server* | select Name, DisplayName, Description, Enabled
  • 可选:如规则丢失或被禁用,可以创建新规则
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
  • 可选:如果要修改配置,如设置用户访问权限,可以编辑sshd_config配置文件,OpenSSH 服务器配置文件可以在 sshd_config 手册页中找到。
Start-Process Notepad C:\Programdata\ssh\sshd_config
  • 完成更改后,重启 SSHD 服务应用配置
Restart-Service sshd

客户端配置

首次连接时,会要求输入密码,密码是windows用户的开机密码,如果没有可能需要设置无密码登入,看后面的操作。

如果远程设备使用非标准 22 端口,需要指定端口号

ssh 用户名@IP地址 -p 端口号

这里用户名名称是windows用户名称,不是windows账号名称:一般为 Administrator ,IP地址可以利用 ipconfig 查看

jupyter配置

在本地机器的Terminal中启动SSH:

ssh -N -f -L localhost:8836:localhost:8889 liutianchen@10.2.152.21

其中:-N告诉SSH没有命令要被远程执行;-f告诉SSH在后台执行;-L是指定port forwarding的配置,远端端口是8889,本地的端口号的8888

连接成功后在客户端输入localhost:8836 就可以进入jupyter 界面,不过为了安全考虑,这里会让你输入密码,需要配置


首先生成jupyter的配置文件,如果有这个配置文件 运行下面命令后可以选择是否重写

jupyter server password

设置完毕密码后,jupyter配置完毕!

jupyter lab

打开可以放一边让远程连接了,连接后慢慢为设置的密码

Running a public Jupyter Server — Jupyter Server documentation (jupyter-server.readthedocs.io)

sshd_config 配置

在文件目录:C:\ProgramData\ssh下的sshd_config文件,用笔记本打开

#可选:允许公钥授权访问  确保条目不被注释
PubkeyAuthentication yes#可选:授权公钥文件存放位置  确保条目不被注释
AuthorizedKeysFile	.ssh/authorized_keys#可选:关闭密码登录,提高安全性  确保条目不被注释
PasswordAuthentication no#可选:允许root登入 windows好像设置了也没用 确保条目不被注释
PermitRootLogin yes#可选:允许空密码登入 注意:root登入是必须要密码的,设置了也无效  确保条目不被注释
PermitEmptyPasswords no#注释掉默认授权文件位置,确保以下条目被注释
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

启用密钥登录

这里都在客服端操作,因此需要在保证能够用密码连接得上的前提下操作,如果操作不了,把文件手动提过去也是可以的

公钥和密钥是两份文件,服务端持有公钥,用来加密;客户端持有密钥,用来解密。客户端向服务端发起连接请求时,服务端会生成一串随机数,经过公钥加密后传给客户端。这时客户端会用密钥解密获取随机数,再返回服务端。最后服务端判断一下,如果客户端能够返回正确的随机数,就认为校验通过了 ,可以进行连接。否则您就从哪儿来会哪儿去吧。
公钥验证机制的存在其实是为了提供一种比密码验证机制更安全的方式,使用公钥认证,就只需要把自己生成的公钥发给管理员,而不需要管理员把服务器的用户密码告诉每一个人(而且以后更改密码可能还要再通知一遍)。对你而言,则可以把公钥发给多个服务端,也避免了去记住不同服务端的用户密码的麻烦。

首先生成公钥(public key)和密钥(private key)

ssh-keygen -t rsa
输入命令后,系统会询问你待生成的密钥文件的名字,默认id_rsa,然后会要你输入一个密语(passphrase)来加密密钥(可以为空)。之后就生成了密钥和公钥,默认公钥文件的名字是密钥文件名加上 **.pub** 后缀。本文使用默认设置,会生成密钥 id_rsa 和 公钥 **id_rsa.pub。

将本地的公钥部署到服务器上

# 确保服务器上存在.ssh 文件夹,若不存在则使用下面命令创建
ssh username@ip mkdir C:\Users\username\.ssh\#通过scp将本地的公钥上传到服务器上并重命名为authorized_keys,注意此方法会覆盖原有authorized_keys
scp C:\Users\username\.ssh\id_rsa.pub user1@ip:C:\Users\username\.ssh\authorized_keys

更改authorized_keys文件权限,不更改则无法通过密钥登录------windows中特有的操作

# 远程通过ACL更改文件权限
ssh --% user1@ip icacls.exe "C:\Users\username\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"# 或者在服务器端修改authorized_keys文件权限
icacls.exe "C:\Users\username\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

可以尝试远程连接了

ssh 用户名@IP地址
如果你之前运行ssh-keygen时,输入过为密钥加密的密语,这时系统会提示你输入密语。这是因为本地主机需要调用密钥id_rsa进行解密。但密钥本身被加密了,所以你要先解密密钥。输入正确的密语后,就会成功进入远程主机。但exit之后,下次发起连接时,还会要你输入密语……(也许你的机器有不同的表现,我们下面会讲)。这完全没达到我们偷懒的目的。但我没说假话,至少你确实不需要输入密码了! 

更多的操作具体在 ssh登陆远程主机(密码方式和key的方式)_win7 openssh server 密码登陆-CSDN博客内

参考:

Windows 上的 OpenSSH:安装、配置和使用指南 - 系统极客 (sysgeek.cn)

linux下开启SSH,并且允许root用户远程登录,允许无密码登录 - 寻找普拉多 - 博客园 (cnblogs.com)

Windows OpenSSH 服务器启用密钥登录 - 知乎 (zhihu.com)

ssh登陆远程主机(密码方式和key的方式)_win7 openssh server 密码登陆-CSDN博客

这篇关于ssh远程访问windows系统下的jupyterlab的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/956577

相关文章

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用