CIFS sobre SSH usando herramientas estándar de Windows 10

Soy vago y por eso me gusta cuando todo está organizado cómodamente, sin gestos innecesarios. A veces soy demasiado vago para hacerlo cómodamente.



Una vez que necesitaba organizar el acceso al servidor a través de SMB y mientras buscaba una solución, encontré el siguiente artículo: Montaje de su directorio de inicio Nikhef usando SSH para Windows 8 . Fue una solución simple y práctica que utilizó Putty. Un poco más tarde, tuve que configurar esta solución en otra computadora y me di cuenta de que Putty era superfluo aquí ya que el cliente ssh integrado basado en OpenSSH apareció en Windows 10.



Bajo el corte: un esquema idéntico, solo usando OpenSSH en Windows 10.



Mi esquema está organizado de la siguiente manera:



  1. Samba se está ejecutando en el servidor, la carpeta raíz con los sitios se comparte en nombre del usuario de www-data. Acceso al servidor solo a través de ssh con autorización de clave. Servidor detrás de NAT, puerto reenviado solo para ssh.
  2. En el proceso de iniciar sesión en una cuenta en una máquina doméstica en Windows 10 a través del sistema OpenSSH incorporado, se establece una conexión con el servidor con autorización por clave.
  3. El puerto 445 de la máquina remota está tunelizado al puerto local 44445 del adaptador de bucle invertido de red disponible en 10.255.255.1
  4. En el adaptador de bucle invertido 10.255.255.1, el puerto 44445 se transfiere al 445 local. Por lo tanto, cuando se conecta a \\ 10.255.255.1 \, se abre un recurso compartido de archivos remoto (que, si es necesario, se monta como una unidad de red).


Todo esto es automático: la pereza triunfa. Seguro, rápido y de apariencia nativa. Cualquier editor puede abrir y editar archivos tanto en un servidor remoto como en mi servidor local, sin problemas para descargar los archivos editados y establecerles los permisos necesarios. Dicho esto, no hay problemas de seguridad con Samba.



Entonces, primer paso a paso:



Lado de VENTANAS



OpenSSH. Windows 10 Windows Server 2019 SSH OpenSSH. . –



ssh




— "", .



1.



loopback- . .



hdwwiz.exe




« » ( Windows 10 Pro).



«» -> « , » -> « » -> «Microsoft –> Microsoft KM-Test» -> «»



, , devcon.exe, .



CMD ( ).



netsh interface show interface




. Ethernet 2.









:



netsh interface ip set address name="Ethernet 2" source=static address=10.255.255.1 mask=255.255.255.0


10.255.255.1



, TCP- 445, Windows lanmanserver . lanmanserver portproxy, .



( «start=» !!!):



sc config lanmanserver start= demand
sc config iphlpsvc start= auto


10.255.255.1 44445 445



netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445 connectaddress=10.255.255.1 connectport=44445


, lanmanserver .



loopback-,



netstat -an | find ":445 "




TCP    10.255.255.1:445    0.0.0.0:0       LISTENING


. "0.0.0.0:445" — - .



netsh interface portproxy show v4tov4


2.



. , .



mkdir %APPDATA%\CIFSoverSSH
cd %APPDATA%\CIFSoverSSH


ssh- ( , : cifsoversshkey)



ssh-keygen -t rsa -N "" -f cifsoversshkey 


. , OpenSSH UNPROTECTED PRIVATE KEY FILE! . , Windows. GUI, . Windows :



icacls cifsoversshkey /RESET
icacls cifsoversshkey /grant _:F /inheritance:r


, .



icacls cifsoversshkey 


, OpenSSH !



cifsoverssh.cmd :



call cmd /c start "" /B C:\Windows\System32\OpenSSH\ssh.exe user@111.111.111.111 -p remoteport -i %APPDATA%\CIFSoverSSH\cifsoversshkey -L 10.255.255.1:44445:localhost:445 -N -o "StrictHostKeyChecking=no"


:

user@111.111.111.111 linux @



3.



: powershell -nologo -noninteractive -windowStyle hidden -command "%APPDATA%\CIFSoverSSH\cifsoversshkey.cmd"

powershell . CMD , , .



:



schtasks /CREATE /RU %username% /TN "CIFS over SSH" /TR "powershell.exe -nologo -noninteractive -windowStyle hidden -command %APPDATA%\CIFSoverSSH\cifsoversshkey.cmd" /SC ONLOGON /DELAY 0000:10 /IT /RL highest


Windows .



Linux



, ssh- .



ssh windows-



C:\Windows\System32\OpenSSH\ssh.exe user@111.111.111.111 -p remoteport


, ~/.ssh/authorized_keys ( – ).



mkdir ~/.ssh && touch ~/.ssh/authorized_keys


, windows- ( %APPDATA%\CIFSoverSSH\cifsoversshkey.pub). . , .



Samba ( Debian)



apt update && apt install samba




mv /etc/samba/smb.conf /etc/samba/smb.conf.old
touch /etc/samba/smb.conf


:



[global]
realm = webserver
server string = Web server
workgroup = WORKGROUP
# Setup charsets
dos charset = cp1251
unix charset = utf8
# Disable printers
load printers = No
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
# Setup logging
log file = /var/log/smbd.log
max log size = 50
max xmit = 65536
debug level = 1
# Setup daemon settings
domain master = No
preferred master = Yes
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=65536 SO_RCVBUF=65536 SO_KEEPALIVE
os level = 65
use sendfile = Yes
dns proxy = No
dont descend = /proc,/dev,/etc
deadtime = 15
# Enable synlinks
unix extensions = No
wide links = yes
follow symlinks = yes

# Securtity settings
security = user
map to guest = Bad Password
guest account = nobody
create mask = 0664
directory mask = 0775
hide dot files = yes
client min protocol = SMB2
client max protocol = SMB3
[ShareName]
comment = Sites folder
path = /home/web
force user = www-data
force group = www-data
read only = No
guest ok = Yes
writable = yes
create mask = 0664
directory mask = 2775


. ShareName. Path = , . force user force group linux-, . - – www-data



Samba



systemctl restart smbd


Windows



exit


. windows ( ).



\\10.255.255.1\ShareName — .




All Articles