# 免密登录配置

客户端使用私钥，服务端保存公钥



## 前置条件
### linux服务端

- 服务端（受控端）需要安装 sshserver
- 步骤：
- sudo apt install openssh-server
- sudo systemctl status ssh

### windows服务端
- 设置 设置管理 可选功能  添加可选功能  下载ssh服务器，SSH 连接中，控制端（客户端）和 受控端（服务器）
- win + r services.msc
- 找到“OpenSSH SSH Server”服务。
- 右键点击服务，选择“启动”来启动SSH服务。



## 生成密钥（windows linux通用）



## linux服务端配置  必须authorized_keys目录下
- **1、修改服务端配置文件**：
  修改三个位置
  sudo nano /etc/ssh/sshd_config
  StrictModes no
  PubkeyAuthentication yes
  AuthorizedKeysFile	.ssh/authorized_keys/wyc_common_ed25519.pub .ssh/authorized_keys .ssh/authorized_keys2
- **2、重新启动服务**：
  service sshd restart
- **3、写入公钥**：
  进入主目录 CTRL+H 显示隐藏文件
  新建.ssh 进入打开终端
  新建 authorized_keys 写入公钥



## windows服务端配置
- **1、修改服务端配置文件**：
  C:\ProgramData\ssh\sshd_config
  确保以下3条没有被注释
  PubkeyAuthentication yes
  AuthorizedKeysFile  .ssh/authorized_keys
  PasswordAuthentication no  (需要将默认的yes改为no,很重要)
  确保以下2条有注释掉
  #Match Group administrators
  #AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
- **2、重新启动服务**：
  win+r service.msc
- **3、写入公钥**：
  C:\Users\${wyc}\.ssh\authorized_keys  放置公钥



#### 客户端配置（windows linux通用）   ***放入私钥***
-    ${用户目录下}/config 写入
```
    Host jump-host
    HostName 192.168.1.24
    User wyc
    Port 22
    IdentityFile C:\Users\wyc\.ssh\private\id_rsa
  
    Host target-host
    HostName 192.168.1.166
    User bright
    Port 22
    ProxyJump jump-host
```


- ## 参考资料
- [windows Openssh-server(服务端-免密登陆设置)](https://www.jianshu.com/p/82f90716f9f0)
- [如何在 Ubuntu 上启用 SSH（适用于 20.04、22.04）？](https://developer.aliyun.com/article/1488008)
- [SSH配置文件 /etc/ssh/sshd_conf参数详细说明](https://blog.csdn.net/jxb513651608/article/details/110476607)
- ##### 客户端config
- [SSH config使用教程和总结](https://www.hi-linux.com/posts/14346.html)
- [ssh之 ~/.ssh/config 配置文件实现](https://blog.csdn.net/weixin_45697293/article/details/125119796)
- [SSH Config 那些你所知道和不知道的事](https://deepzz.com/post/how-to-setup-ssh-config.html)
- [FreeBSD Manual Pages](https://man.freebsd.org/cgi/man.cgi?query=ssh_config)


- ## 使用最佳实践
- 目录使用 新建一个~/.ssh/private文件夹 所有的公钥私钥都放在这个文件夹下
- 每台设备生成自己的公钥私钥 并在自己的authorized_keys里放置自己的公钥 谁想连接他就把私钥给谁


### 远程调试
注意使用clion 远程调试功能时  target remote 指的是gdb客户端 到 gdb服务端的命令 需要后台起一个ssh转发流量功能
target remote 127.0.0.1:1234

### 开启ssh隧道示例
ssh -L 1234:127.0.0.1:1234 wyc@ubuntu_22_04_5

PS C:\Users\wyc> gcc -print-search-dirs                                                                                        install: C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/
programs: =
C:/wyc/toolchain/aaa/libexec/gcc/x86_64-wyc-linux-gnu/15.1.0/;
C:/wyc/toolchain/aaa/libexec/gcc/x86_64-linux-gnu/;
C:/wyc/toolchain/aaa/libexec/gcc/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/bin/x86_64-wyc-linux-gnu/15.1.0/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/bin/x86_64-linux-gnu/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/bin/
libraries: =
C:/wyc/toolchain/aaa/lib/gcc/x86_64-wyc-linux-gnu/15.1.0/;
C:/wyc/toolchain/aaa/lib/gcc/x86_64-linux-gnu/;
C:/wyc/toolchain/aaa/lib/gcc/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/lib/x86_64-wyc-linux-gnu/15.1.0/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/lib/x86_64-linux-gnu/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/lib64/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/lib/x86_64-wyc-linux-gnu/15.1.0/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/lib/x86_64-linux-gnu/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/lib64/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/usr/lib/x86_64-wyc-linux-gnu/15.1.0/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/usr/lib/x86_64-linux-gnu/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/usr/lib64/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/lib/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/lib/;
C:/wyc/toolchain/aaa/x86_64-wyc-linux-gnu/sysroot/usr/lib/


C:/wyc/toolchain/aaa/libexec/gcc/x86_64-wyc-linux-gnu/15.1.0/cc1.exe 
-quiet -v -imultiarch x86_64-linux-gnu 
-iprefix C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/ 
-isysroot C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot 
.\CMakeCCompilerId.c 
-quiet -dumpdir c/wyc/CLionProjects/plantSunCat/build/ 
-dumpbase aaa.c 
-dumpbase-ext .c 
-mtune=generic 
-march=x86-64 
-version 
-o C:\Users\wyc\AppData\Local\Temp\ccyN8nIV.s


PS C:\wyc\CLionProjects\plantSunCat\build\windows_to_linux_toolchain\CMakeFiles\3.31.6\CompilerIdC> gcc -### -c .\CMakeCCompilerId.c -o aaa.o
Using built-in specs.
COLLECT_GCC=C:\wyc\toolchain\aaa\bin\gcc.exe
Target: x86_64-wyc-linux-gnu
Configured with: ../configure --prefix=/aenv/mingw_wyc_176_toolchain --with-gmp=/aenv/mingw_wyc_176_toolchain --with-mpfr=/aenv/mingw_wyc_176_toolchain --with-mpfr=/aenv/mingw_wyc_176_toolchain --enable-languages=c,c++ --with-pkgversion='wyc 2025.07-25-plant_sun_cat' --with-bugurl=1104749580@qq.com --without-isl --without-cloog --disable-libssp --disable-multilib --disable-bootstrap --enable-shared --build=x86_64-pc-linux-gnu --host=x86_64-w64-mingw32 --target=x86_64-wyc-linux-gnu /aenv/mingw_wyc_176_toolchain x86_64-pc-linux-gnu x86_64-w64-mingw32 x86_64-wyc-linux-gnu --with-sysroot=/aenv/mingw_wyc_176_toolchain/x86_64-wyc-linux-gnu/sysroot
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 15.1.0 (wyc 2025.07-25-plant_sun_cat)
COLLECT_GCC_OPTIONS='-c' '-o' 'aaa.o' '-mtune=generic' '-march=x86-64'
"C:/wyc/toolchain/aaa/bin/../libexec/gcc/x86_64-wyc-linux-gnu/15.1.0/cc1.exe" -quiet -imultiarch x86_64-linux-gnu -iprefix "C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/" -isysroot "C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot" ".\\CMakeCCompilerId.c" -quiet -dumpbase aaa.c -dumpbase-ext .c "-mtune=generic" "-march=x86-64" -o "C:\\Users\\wyc\\AppData\\Local\\Temp\\cc7Ncwwb.s"
COLLECT_GCC_OPTIONS='-c' '-o' 'aaa.o' '-mtune=generic' '-march=x86-64'
"C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/../../../../x86_64-wyc-linux-gnu/bin/as.exe" --64 -o aaa.o "C:\\Users\\wyc\\AppData\\Local\\Temp\\cc7Ncwwb.s"
COMPILER_PATH=C:/wyc/toolchain/aaa/bin/../libexec/gcc/x86_64-wyc-linux-gnu/15.1.0/;C:/wyc/toolchain/aaa/bin/../libexec/gcc/;C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/../../../../x86_64-wyc-linux-gnu/bin/
LIBRARY_PATH=C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/;C:/wyc/toolchain/aaa/bin/../lib/gcc/;C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/../../../../x86_64-wyc-linux-gnu/lib/../lib64/;C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot/lib/x86_64-linux-gnu/;C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot/lib/../lib64/;C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot/usr/lib/x86_64-linux-gnu/;C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot/usr/lib/../lib64/;C:/wyc/toolchain/aaa/bin/../lib/gcc/x86_64-wyc-linux-gnu/15.1.0/../../../../x86_64-wyc-linux-gnu/lib/;C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot/lib/;C:/wyc/toolchain/aaa/bin/../x86_64-wyc-linux-gnu/sysroot/usr/lib/
COLLECT_GCC_OPTIONS='-c' '-o' 'aaa.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'aaa.'