07-31-2019
The client side needs to generate the key-pairs and the server side needs to have the public keys for each acceptable key-pair added to ~/.ssh/authorized_keys file for the user account on the server being connected to. Never copy the private key between users or servers (except for backups I suppose) because these are the critical identity proof for the client. If misused, you have little idea what has used them. If you feel that the integrity might have been compromised on a client, you can change the public key for just that client on the server rather than on all the clients, which is prone to error from clients being switched off or you not having the rights to sign on to the client to change the keys etc.
The server uses the keys for the requested user in ~/.ssh/authorized_keys in turn to encrypt a challenge to any connecting client. A client can prove it's identity by decrypting the challenge and responding, so keep the private key (used for decryption) separate for each user of each client and you will know what is permitted or not. The server can have multiple public keys authorised for any particular account by adding the multiple public keys on separate lines in ~/.ssh/authorized_keys for the target user(s) that the client is permitted to connect to.
You can go further and the client could generate multiple pairs of keys and save them to different pairs of files. The client can then be directed to use the appropriate private key for each user/server combination it wishes to connect to. Some may think this as overkill but it is an option should you deem it necessary and it is your choice. We use single client key-pairs for many things but specific user/server key-pairs for our most critical connections.
Remember that security is important and SSH (and related services) enforce this. Generally try to ensure that client's ~/.ssh directory and contents must not be readable by anyone else. Open permissions get rejected. Similar for the target account on the server. Openning permissions up to 'help' it will not work.
I hope that this helps,
Robin
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi
Is it possible to add users on a Mac OSX server from a unix system with ssh?
If it is what file to alter?
brg Nicke (3 Replies)
Discussion started by: nicke30
3 Replies
2. Shell Programming and Scripting
I'm trying to run a set of commands on a remote machine using ssh in a shell script. One of the commands is unzip. But when the execution reaches this command, the script fails with an error that unzip is not found. Below is the code and the error snippet.
sourceDir=$1 ; filename=$3 ; destDir=$2... (4 Replies)
Discussion started by: farahzaiba
4 Replies
3. UNIX for Dummies Questions & Answers
Hi,
I use bru to backup a variety of servers. One of our servers crashed and we had to do an emergency restore. It is working fine. The problem is the backup server refuses to backup the ftp server. The backup server ssh's into the servers and executed the bru command and instructs that that... (1 Reply)
Discussion started by: mojoman
1 Replies
4. Shell Programming and Scripting
I'm trying to write a script using expect. I'd like the script to execute several commands when the ssh succeeds and i want it to exit if the ssh fails. Does this require to define a time out for the ssh command so that if the prompt is back before this defined time the next commands are executed??... (2 Replies)
Discussion started by: Hossam_Nox
2 Replies
5. Red Hat
Guys,
Need your help coz my server runs in local time GMT +8, but when client use ftp and login, the resulting timestamp seen in each file is in UTC format. We need to set that the time should be the same as GMT +8 when in ftp session.
I am using RHEL 5.3.
root@]# ll
total 1740... (2 Replies)
Discussion started by: shtobias
2 Replies
6. Ubuntu
Unable to set ssh passwordless authentication
I am unable to ssh with passwordless authentication from Windows client onto UBuntu server. The ssh version on UBuntu is OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e , while SSH on Windows Client is OpenSSH_5.1p1, OpenSSL 0.9.8k. I turned on ssh... (5 Replies)
Discussion started by: tkota
5 Replies
7. Shell Programming and Scripting
The below while loop is in ksh on a SunOs server: SPARC-Enterprise 5.10
The ksh version is: Version M-11/16/88i
The intention of the below while loop is to read through a list of file names in files.txt and
delete each file from a server, one at a time. The delete works, the problem is that if... (6 Replies)
Discussion started by: LES2013
6 Replies
8. Shell Programming and Scripting
Hi,
I am triggering a windows exe file using the below command.
ssh user@remoteserver command.exe -option1:xx /option2:yy
This command is working fine from windows command prompt. When I am triggering the same command from ssh I get the error message cant load
Any ideas to deal with... (2 Replies)
Discussion started by: ahmedwaseem2000
2 Replies
9. Shell Programming and Scripting
I have a constraint to follow organization policy. So i do not have much liberty.
ssh -i /opt/nonprod user1@hostone -t bash works while ssh -i /opt/nonprod -t bash user1@hostone fails
How can I get this to work when I am enforced to put -t bash before the user@hostname ?
Will share debug... (3 Replies)
Discussion started by: mohtashims
3 Replies
10. Shell Programming and Scripting
I have two linux servers viz 12.7.44.18 and 12.7.45.18
I wish to ssh from both these server to a destination AiX server 12.7.33.18
The ssh works from 12.7.44.18 -> 12.7.33.18 but fails from 12.7.45.18 -> 12.7.33.18
The openssl version on both linux source 12.7.44.18 and 12.7.45.18 is the... (7 Replies)
Discussion started by: mohtashims
7 Replies
LEARN ABOUT CENTOS
git-shell
GIT-SHELL(1) Git Manual GIT-SHELL(1)
NAME
git-shell - Restricted login shell for Git-only SSH access
SYNOPSIS
chsh -s $(command -v git-shell) <user>
git clone <user>@localhost:/path/to/repo.git
ssh <user>@localhost
DESCRIPTION
This is a login shell for SSH accounts to provide restricted Git access. It permits execution only of server-side Git commands implementing
the pull/push functionality, plus custom commands present in a subdirectory named git-shell-commands in the user's home directory.
COMMANDS
git shell accepts the following commands after the -c option:
git receive-pack <argument>, git upload-pack <argument>, git upload-archive <argument>
Call the corresponding server-side command to support the client's git push, git fetch, or git archive --remote request.
cvs server
Imitate a CVS server. See git-cvsserver(1).
If a ~/git-shell-commands directory is present, git shell will also handle other, custom commands by running "git-shell-commands/<command>
<arguments>" from the user's home directory.
INTERACTIVE USE
By default, the commands above can be executed only with the -c option; the shell is not interactive.
If a ~/git-shell-commands directory is present, git shell can also be run interactively (with no arguments). If a help command is present
in the git-shell-commands directory, it is run to provide the user with an overview of allowed actions. Then a "git> " prompt is presented
at which one can enter any of the commands from the git-shell-commands directory, or exit to close the connection.
Generally this mode is used as an administrative interface to allow users to list repositories they have access to, create, delete, or
rename repositories, or change repository descriptions and permissions.
If a no-interactive-login command exists, then it is run and the interactive shell is aborted.
EXAMPLE
To disable interactive logins, displaying a greeting instead:
+
$ chsh -s /usr/bin/git-shell
$ mkdir $HOME/git-shell-commands
$ cat >$HOME/git-shell-commands/no-interactive-login <<EOF
#!/bin/sh
printf '%s
' "Hi $USER! You've successfully authenticated, but I do not"
printf '%s
' "provide interactive shell access."
exit 128
EOF
$ chmod +x $HOME/git-shell-commands/no-interactive-login
SEE ALSO
ssh(1), git-daemon(1), contrib/git-shell-commands/README
GIT
Part of the git(1) suite
Git 1.8.3.1 06/10/2014 GIT-SHELL(1)