cmderdev / cmder

Lovely console emulator package for Windows
https://cmder.app
MIT License
25.69k stars 2.02k forks source link

Question: How do I change the route cmder has to find ssh keys? #2930

Open DarioArDi opened 3 months ago

DarioArDi commented 3 months ago

Question

Right now it searches in "~/.ssh "but i would like to put a relative path to not have to copy my keys in the home directory of every computer that I use instead of geting them from the external drive. I have searched everywhere, I tried looking at user_profile.cmd, start-ssh-agent.cmd and init.bat.

Checklist

DarioArDi commented 2 months ago

By asking Claude 3 (AI) this are the steps.

  1. Go to Settings...
  2. Go to Startup -> Tasks
  3. In {bash::bash} (the one that I am using) I added in the commands

set HOME=%CMDER_ROOT%.ssh set SSH_USER_HOME=%CMDER_ROOT%.ssh

I added a .ssh folder to the cmder root with the keys.

daxgames commented 2 months ago

Yeah I would not do it that way.

Cmder has init scripts you can add that stuff to in your case it would be $CMDER_ROOT/config/user_profile.sh

Add:

export SSH_USER_HOME="$CMDER_ROOT/.ssh"

or whatever else you need to configure in your env.

You could also look at $CMDER_ROOT/config/profile.d and just drop a *.sh|cmd|ps1 file to customize bash|cmd|or powershell sessions.

chrisant996 commented 2 months ago

Yeah the AI made up a bad answer, LOL.

DarioArDi commented 2 months ago

Yeah I would not do it that way.

Cmder has init scripts you can add that stuff to in your case it would be $CMDER_ROOT/config/user_profile.sh

Add:

export SSH_USER_HOME="$CMDER_ROOT/.ssh"

or whatever else you need to configure in your env.

You could also look at $CMDER_ROOT/config/profile.d and just drop a *.sh|cmd|ps1 file to customize bash|cmd|or powershell sessions.

It does not recognise export as a command.

Yeah, I did not test it well and in fact, it does not work

daxgames commented 2 months ago

If you edited $CMDER_ROOT/config/user_profile.sh and are using bash::bash then export is indeed a valid command.

DarioArDi commented 2 months ago

apparently i am using cmd::Cmder

daxgames commented 2 months ago

For cmd::cmder edit %CMDER_ROOT%/config/user_profile.cmd and use set instead of export.

You can also do the same for PowerShell::PowerShell by editing $env:CMDER_ROOT\config\user_profile.ps1.

$env:SSH_USER_HOME = "$env:CMDER_ROOT\.ssh"
DarioArDi commented 2 months ago

I tried that, and it does not give me an error message, but it wont add the keys. I checked start-ssh-agent.cmd and SSH_USER_HOME does not appear anywhere. I can't find what to change in there to set the path.

daxgames commented 2 months ago

I never said what you were trying to do would actually work. I have never even considered moving my ~/.ssh folder as it is against well established convention.

I was just trying to tell you how to properly set env variables for various shells supported by Cmder.

You may have to make a copy of the script you mentioned and edit it to do what you need.

DarioArDi commented 2 months ago

Ok, I need this to work in orther to have a portable working git with ssh keys so I don't have to copy my keys everywhere.

DRSDavidSoft commented 2 months ago

Wouldn't using the ssh agent be useful here?

Other than that, maybe editing the ssh\ssh_config file in the vendor\git-for-windows and setting the IdentityFile variables to be a custom path can help you, such as ${CMDER_ROOT}/config/.ssh/... or something like that.

Doing a quick search it seems that %SSH_USER_HOME% is not associated with what you want to do, other people suggest changing the whole %HOME% variable to point to somewhere (like CMDER_ROOT\config) and putting your .ssh folder there.