He creado un archivo plist para reemplazar un proceso xinetd que usé con éxito en Windows (Cygwin) y Linux para transmitir una conexión imapd desde un servidor remoto a través de ssh
en un puerto en el host local.
El comando plutil
dice que mi configuración está bien. launchctl load path-to-plist
se ejecuta sin errores.
Cuando ejecuto launchctl list
, el agente no se muestra. Cuando intento conectarme al puerto en el host local, se me niega la conexión.
Aquí está mi archivo plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.my.ssh_tunnel</string>
<key>Program</key>
<string>/usr/bin/ssh</string>
<key>ProgramArguments</key>
<array>
<string>-F /Users/userx/.ssh/config</string>
<string>dname /usr/sbin/imapd</string>
</array>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>dname-imapd</string>
<key>SockType</key>
<string>stream</string>
<key>SockProtocol</key>
<string>TCP</string>
</dict>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Disabled</key>
<false/>
<key>Wait</key>
<false/>
</dict>
<key>EnvironmentVariables</key>
<dict>
<key>SSH_AUTH_SOCK</key>
<string>/Users/userx/.ssh-agent.sock</string>
</dict>
</dict>
</plist>
He agregado una línea a / etc / services para dname-imapd y un puerto no asignado (49022). En última instancia, usaré esto junto con ssh-agent (para que esto funcione sin contraseña) y Thunderbird para recuperar el correo de un sistema muy cerrado.
Hay esencialmente dos preguntas aquí. Uno, ¿cómo sé que mi agente se está cargando (y cómo lo confirmo)? Dos, ¿mi plist es realmente correcto?
Aquí está mi xinetd configuración original:
service imapssh
{
disable = no
type = UNLISTED
port = 2208
socket_type = stream
protocol = tcp
wait = no
server = /usr/bin/ssh
server_args = dname /usr/sbin/imapd
user = userx
}
Gracias por cualquier ayuda. Esto me está volviendo un poco loco.
Esto está en una MacBook Pro de El Capitan.
También, probé un túnel ssh directo pero eso no funciona (antes de que alguien lo sugiera). A menos que alguien sepa cómo hacerlo funcionar como inetd y generar cada vez que el cliente de correo se conecte al puerto.